如何保证我的WPF应用程序的永久管理员权限

本文关键字:管理员 权限 应用程序 何保证 我的 WPF | 更新日期: 2023-09-27 18:09:00

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

如何保证我的WPF应用程序的永久管理员权限

在你的应用中添加一个应用清单:

<security>
  <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
    <requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />    
  </requestedPrivileges>
</security>

这篇MSDN文章解释了如何对UAC友好:教你的应用程序很好地发挥Windows Vista用户帐户控制

使用应用程序清单标记必需的权限是您正在寻找的。

Windows没有能力授予应用程序管理权限;权限由用户授予。

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

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

  • 你可以设计你的应用程序不需要管理权限:)
  • 您可以通知您的应用程序需要管理权限
    • 与UAC关闭请求不能被执行:(
    • 在请求上带有UAC的
    • 可能不会
    • 被执行:(

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

如果我理解正确,你的应用程序将是用户shell,也就是说,它将取代Windows资源管理器。在这种情况下,有多种方法可以绕过UAC,例如,通过使用凭据管理器捕获用户的凭据并使用它们创建新的令牌,或者通过挂钩LogonUser函数并捕获未修改的令牌。

然而,到目前为止最简单的方法是禁用UAC。除非用户将运行Internet Explorer或其他利用UAC沙箱的程序,否则在您的场景中可能没有理由让UAC处于打开状态。