只为成功找方向,不为失败找借口

每天都不能停止前进的脚步
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

application manifest 中的requestedElevationLevel令牌

Posted on 2011-06-02 19:41  冰碟  阅读(1096)  评论(0编辑  收藏  举报
可执行文件请求得到管理权限的最常用方式是在其应用程序指令清单文件中包含一个 requestedElevationLevel 令牌。指令清单是 XML 文件,其中包含有关某个映像的补充信息。它们是在 Windows XP 中引入的,作为标识与并列 DLL 和 Microsoft .NET Framework 程序集的依赖关系的一种方式。指令清单中出现的 trustInfo 元素(可在下面的 Firewallsettings.exe 字符串转储摘录中看到)表明这是一个为 Windows Vista 编写的可执行文件,并且其中嵌套了 requestedElevationLevel 元素。该元素的 level 属性可具有以下三个值之一:asInvoker、highestAvailable 和 requireAdministrator。

     xmlns=”urn:schema-microsoft-com:asm.v3”>

     Level=”requireAdministrator”

  uiAccess=”false”/>

  不需要管理权限的可执行文件(如 Notepad.exe)指定 asInvoker 值。某些可执行文件预期管理员始终希望具有最大访问权限,因此他们使用 highestAvailable 值。如果某用户运行具有该值的可执行文件,那么仅当他在 AAM 中运行或被视为管理员(根据早先定义的规测)且必须提升以获得其管理权限时,才会要求提升他的权限。例如,Regedit.exe、Mmc.exe 和 Eventvwr.exe 都是使用 highestAvailable 的应用程序。最后,requireAdministrator 始终会导致提升请求,任何没有管理权限就无法操作的可执行文件需要使用该值。

  可访问性应用程序为 uiAccess 属性指定“true”,以便驱动所提升进程的窗口输入,并且它们还必须带有签名并位于多个安全位置(包括 %SystemRoot% 和 %ProgramFiles%)之一以获取该能力。

 

 

附:

1,

问:

VB.net(VS2008)里面 直接在项目属性的“应用程序”里面点击“查看UAC设置”,在新打开的app.manifest里面把 <requestedExecutionLevel level="asInvoker" uiAccess="false" /> 替换成 <requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> 再编译后,出现 ClickOnce does not support the request execution level 'requireAdministrator' 错误! 不知道如何解决!

答:

使用ClickOne方式发布不允许系统管理员级别。
如果要求使用系统管理员级别运行,就不能使用ClickOne方式发布。

 

2,

问:

请问ClickOnce的客户端安装路径可以修改吗?                  
我很希望能够指定路径安装,并且可以多个Windows帐号使用。
就象一般的安装程序一样,或许需要管理员权限的帐号安装,但是别的非管理员帐号也可以使用。
对于ClickOnce提供的恢复到以前版本的功能,我觉得用处不是很大,至少我暂时不需要。这导致了多个目录。
我现在需要的就是可以自动更新,还可以指定目录安装,还可以允许多个Windows帐号使用。

答:

关于您的问题一:我现在需要的就是可以自动更新。
ClickOnce 可以提供自动应用程序更新。ClickOnce 应用程序会定期读取其部署清单文件,以查看是否有可用的应用程序更新。如果有,则会下载并运行应用程序的新版本。为提高效率,仅下载那些已更改的文件。
【选择 ClickOnce 更新策略 】
http://msdn2.microsoft.com/zh-cn/library/s22azw1e(VS.80).aspx

问题二:还可以指定目录安装。
不可更改。ClickOne默认将程序安装在ClickOnce 应用程序缓存。缓存是当前用户的 Documents and Settings 文件夹中 Local Settings 目录下的一系列隐藏目录。
关于【ClickOnce 缓存概述】:http://msdn2.microsoft.com/zh-cn/library/267k390a(VS.80).aspx

问题三:可以允许多个Windows帐号使用。
Clickone不能为多个用户安装,也就是,安装的时候,不需要管理员的权限,普通用户就可以安装。所以对于一台机器上的每一个用户,都需要安装一次。