[英]How do I write a Windows 8 software to run with SYSTEM privileges?
对于标题中的错误用语,我深表歉意,但这里有更多内容。
我最近购买了一台Windows 8笔记本电脑,并注意到Norton已预先安装并以SYSTEM级别特权运行。 因此,我想到了第三方应用程序必须以某种方式以SYSTEM特权运行。
但是,经过大量的搜索之后,我无法弄清楚这是API调用还是注册表设置,还是完全使Norton能够做到这一点的其他东西,所以我决定向SO社区询问。 如何编写以SYSTEM特权运行的应用程序?
可以将服务配置为作为几个不同的帐户运行,包括LOCAL SERVICE
, NETWORK SERVICE
, SYSTEM
或任何用户的帐户。
不建议使用SYSTEM
,因为任何安全问题都可能导致计算机完全受损,但是可以使用。
这由CreateService
和/或ChangeServiceConfig
的lpServiceStartName
参数配置。 将NULL指针作为CreateService
此参数或".\\\\LocalSystem"
传递给ChangeServiceConfig
,以使用本地系统帐户。
将GUI应用程序作为本地系统运行是一个坏主意。 最好的方法是同时拥有一个GUI应用程序(以登录用户身份运行)和一个服务(以SYSTEM用户身份运行),并使用任何合适的IPC方法根据需要进行通信。 这可能是诺顿实际上在做的事情。
但是,有可能获得系统服务以在用户会话中以SYSTEM身份启动应用程序。 为此,请使用DuplicateTokenEx
流程安全令牌,然后将SetTokenInformation
与TokenSessionId
选项一起使用。 这将在SYSTEM上下文中但在用户会话中为您提供一个令牌,您可以使用它来启动可执行文件。 (可能存在其他问题;例如,您可能还需要更改工作站和桌面上的权限。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.