以特权用户身份运行 Windows 服务

Posted

技术标签:

【中文标题】以特权用户身份运行 Windows 服务【英文标题】:Running a windows service as a privileged user 【发布时间】:2013-03-06 15:01:39 【问题描述】:

我有一个用 c++ 编写的 Windows 服务,我需要它以特权权限开始,例如。管理员或系统。该服务需要访问 %SYSTEMROOT%、%USERPROFILES%、%TEMP% 等。 该服务将在 windows XP 和 7 下运行。

该服务将使用 GPO 部署,因此无法使用本地帐户。

我可以在服务本身中设置用户吗?如果,怎么做?如果没有,我该如何使用 GPO 部署它?

有什么想法吗? 谢谢

【问题讨论】:

【参考方案1】:

您没有从服务(即从代码)设置用户。而是在部署/安装服务时设置运行服务的用户帐户。

您安装 Windows 服务的选项是

构建 MSI 包并利用 Windows Installer 基础架构 使用命令行手动部署(即我们使用批处理文件和sc 命令)

使用sc command 时,您可以使用以下命令设置服务的用户帐户:

sc config <servicename> obj= <accountname> password= <password>

通过 Windows Installer 部署时,您可以在 MSI 中配置用户帐户。

然后,您可以使用组策略通过 MSI 或其他方法远程安装/部署您的服务。

【讨论】:

以上是关于以特权用户身份运行 Windows 服务的主要内容,如果未能解决你的问题,请参考以下文章

Sudo漏洞允许非特权Linux和macOS用户以root身份运行命令

如何以与 Windows 服务不同的用户身份运行进程

WiX ServiceInstall - 将服务设置为以当前 Windows 用户身份运行

强制 c# windows 服务始终作为系统运行,并且不允许非特权用户停止/启动

以 Windows 登录用户身份从服务启动进程

如何以编程方式获得 root 权限?