繁体   English   中英

如何编写具有SYSTEM特权的Windows 8软件?

[英]How do I write a Windows 8 software to run with SYSTEM privileges?

对于标题中的错误用语,我深表歉意,但这里有更多内容。

我最近购买了一台Windows 8笔记本电脑,并注意到Norton已预先安装并以SYSTEM级别特权运行。 因此,我想到了第三方应用程序必须以某种方式以SYSTEM特权运行。

但是,经过大量的搜索之后,我无法弄清楚这是API调用还是注册表设置,还是完全使Norton能够做到这一点的其他东西,所以我决定向SO社区询问。 如何编写以SYSTEM特权运行的应用程序?

可以将服务配置为作为几个不同的帐户运行,包括LOCAL SERVICENETWORK SERVICESYSTEM或任何用户的帐户。

不建议使用SYSTEM ,因为任何安全问题都可能导致计算机完全受损,但是可以使用。

这由CreateService和/或ChangeServiceConfiglpServiceStartName参数配置。 将NULL指针作为CreateService此参数或".\\\\LocalSystem"传递给ChangeServiceConfig ,以使用本地系统帐户。

将GUI应用程序作为本地系统运行是一个坏主意。 最好的方法是同时拥有一个GUI应用程序(以登录用户身份运行)和一个服务(以SYSTEM用户身份运行),并使用任何合适的IPC方法根据需要进行通信。 这可能是诺顿实际上在做的事情。

但是,有可能获得系统服务以在用户会话中以SYSTEM身份启动应用程序。 为此,请使用DuplicateTokenEx流程安全令牌,然后将SetTokenInformationTokenSessionId选项一起使用。 这将在SYSTEM上下文中但在用户会话中为您提供一个令牌,您可以使用它来启动可执行文件。 (可能存在其他问题;例如,您可能还需要更改工作站和桌面上的权限。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM