2

我为标题中的错误措辞道歉,但这里有更多的上下文。

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

但是,经过多次谷歌搜索,我无法确定是 API 调用还是注册表设置或其他完全使 Norton 能够做到这一点的东西,所以我决定询问 SO 社区。如何编写以 SYSTEM 权限运行的应用程序?

4

2 回答 2

4

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

不推荐使用SYSTEM,因为任何安全问题都可能导致机器完全崩溃,但它是可用的。

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

于 2013-10-04T18:03:33.133 回答
0

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

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

于 2013-10-06T21:06:14.707 回答