代码之家  ›  专栏  ›  技术社区  ›  merlin2011

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

  •  2
  • merlin2011  · 技术社区  · 11 年前

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

    我最近买了一台Windows 8笔记本电脑,注意到Norton是预装的,并且以SYSTEM级别的权限运行。因此,我突然想到,第三方应用程序必须有某种方式才能使用SYSTEM权限运行。

    然而,在谷歌上搜索了很多之后,我不知道是API调用还是注册表设置,或者是其他什么完全使Norton能够做到这一点,所以我决定询问so社区。如何编写使用SYSTEM权限运行的应用程序?

    2 回复  |  直到 11 年前
        1
  •  4
  •   Ben Voigt    11 年前

    服务可以配置为以多种不同的帐户运行,包括 LOCAL SERVICE , NETWORK SERVICE , SYSTEM ,或任何用户的帐户。

    使用 系统 不建议使用,因为任何安全问题都可能导致机器完全受损,但它是可用的。

    这是由配置的 lpServiceStartName 的参数 CreateService 和/或 ChangeServiceConfig 。将NULL指针作为的此参数传递 创建服务 ".\\LocalSystem" 更改服务配置 ,以使用本地系统帐户。

        2
  •  0
  •   Harry Johnston    11 年前

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

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