如何编写Windows 8软件以使用SYSTEM权限运行?

我为标题中的错误措辞表示歉意,但这里有更多的内容。

我最近买了一台Windows 8笔记本电脑,并注意到诺顿是预安装的,并以系统级权限运行。 因此,我想到第三方应用程序必须有一些以SYSTEM权限运行的方法。

然而,经过大量的search,我无法弄清楚这是一个API调用还是一个registry设置,或者是其他的东西都可以让诺顿做到这一点,于是我决定询问SO社区。 我如何编写一个以SYSTEM权限运行的应用程序?

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

不建议使用SYSTEM ,因为任何安全问题都可能导致机器的完全损坏,但可用。

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

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

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