2

我已经阅读了很多关于 Windows 7 中 UAC 升级的文章等等,但我没有成功找到我的问题的答案:如何保证我的应用程序将始终“以管理员身份运行”,我正在寻找一些代码片段或其他东西。任何帮助将不胜感激。/并且请不要发送垃圾邮件,例如:“您确定需要此权限和访问权限吗?” - 是的,我确定应用程序需要它们。

4

4 回答 4

7

使用以下部分将应用清单添加到您的应用:

<security>
  <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
    <requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />    
  </requestedPrivileges>
</security>
于 2011-09-20T07:51:26.870 回答
4

这篇 MSDN 文章解释了如何对 UAC 友好: Teach Your Apps To Play Nice with Windows Vista User Account Control

使用应用程序清单标记所需权限一章正是您所寻找的。

于 2011-09-20T07:53:22.250 回答
2

Windows 无法授予应用程序管理权限;权限由用户授予。

如果运行您的应用程序的用户没有管理权限,那么您的应用程序将没有管理权限。

程序不能因为程序希望而“保证永久”管理员权限。用户必须被授予权限。

  • 您可以将您的应用程序设计为不需要管理权限:)
  • 您可以宣传您的应用程序需要管理权限
    • 关闭 UAC 后,请求将无法兑现 :(
    • 与 UAC 的请求可能不会被兑现:(

但是不能要求应用程序被授予管理权限。

于 2011-09-20T23:57:42.850 回答
1

如果我理解正确,您的应用程序将成为用户外壳,即它将取代 Windows 资源管理器。在这种情况下,您可以通过多种方式绕过 UAC,例如,通过使用凭证管理器来捕获用户的凭证并使用它们来创建新令牌,或者通过挂钩 LogonUser 函数并捕获未修改的令牌。

但是,到目前为止,最简单的方法是禁用 UAC。除非用户将运行 Internet Explorer 或其他利用 UAC 沙盒的程序,否则可能没有理由在您的方案中打开 UAC。

于 2011-09-20T20:53:45.937 回答