【发布时间】:2015-05-06 14:44:17
【问题描述】:
我有一项需要提升管理权限的服务。该服务在 Windows XP 和 Windows 2008r2 上运行良好,但是当我运行代码检查应用程序是否在 Windows 2012r2 上提升的管理上下文下执行时 - 结果总是错误的。
我已经尝试将<requestedExecutionLevel level="requireAdministrator" uiAccess="true" /> 添加到应用程序清单中,当我运行与控制台应用程序相同的代码时,这可以正常工作 - 但作为一项服务,应用程序只是在没有提升权限的情况下执行 - 无法执行需要管理权限。
另外,我正在使用已接受的答案 here 中的代码来确定我是否以提升的权限运行。
【问题讨论】:
-
我认为提升和非提升模式的概念不适用于服务(因此您运行的代码可能不相关)。例如,如果您将服务配置为以管理员身份登录,那么您将自动拥有对计算机的完全访问权限。
-
在服务的上下文中谈论 UAC 是没有意义的。服务无法提示用户提升,服务管理器将忽略清单。您必须使用具有足够权限的用户帐户配置服务。默认是 SYSTEM 帐户,它已经拥有很高的权限。
-
这很有意义。谢谢大家 - 我会做更多的测试。
标签: c# windows-services uac windows-server-2012-r2