这种确保我的管理应用程序在启动时请求管理员权限的方法有多稳定:
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
</requestedPrivileges>
这在 Windows 7 上运行良好,但我无法访问 XP 和 Vista,所以无法判断。
这种确保我的管理应用程序在启动时请求管理员权限的方法有多稳定:
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
</requestedPrivileges>
这在 Windows 7 上运行良好,但我无法访问 XP 和 Vista,所以无法判断。
Windows XP 不处理requestedPrivileges 节点,也没有任何类型的UAC 机制。
UAC 和设置请求的执行级别的能力都是在 Windows Vista 中引入的。
Windows XP 的标准帐户严格来说就是这样,并且没有提升机制来执行管理任务,除非再次登录。
因此,处理因缺少 XP 权限而导致的错误的最佳实践就是显示有意义的错误消息。
通过指定该清单,您可以告诉 Windows(Vista 或 7),如果标准用户(管理员以及启用了 UAC 的用户)尝试执行此应用程序,则应出现 UAC 提示。如果没有提升,此应用程序将无法按预期工作。
Windows Vista 和 Windows 7 都可以正确处理这个问题,这就是 UAC 的设计原因。
对于 Windows XP,标准用户需要手动使用 runas 以管理员身份执行您的应用程序,而管理员用户可以直接运行它。Windows XP 上没有 UAC,它回退到 Windows 开发人员长期熟悉的旧行为。
要测试 Windows XP,您应该使用 Windows XP 模式,http://www.microsoft.com/windows/virtual-pc/download.aspx
是的,该清单可确保属于 Administrators 组的用户在接受 UAC 提示时在 Vista 上得到适当的提升。
它不做的是给不属于该组权限的用户。就像在 XP 中完成的方式一样,在以后的版本中也是如此。站点管理员可能会为用户提供受限帐户。没关系,他们肯定不应该运行你的程序。管理员不希望他们这样做。请检查您是否给出了合理的诊断。WindowsPrincipal.IsInRole(WindowsBuiltInRole.Administrator) 允许您检查 .NET。