如何从 C++ 代码创建具有管理员权限的服务
Posted
技术标签:
【中文标题】如何从 C++ 代码创建具有管理员权限的服务【英文标题】:How to create a service with administrator rights from c++ code 【发布时间】:2016-05-13 10:45:21 【问题描述】:我创建了一个 bat 来执行脚本文件 (.vbs) 以从 Windows 注册表中获取已安装的软件列表。 我按照 2 种方式执行 bat 文件。
1) 从命令提示符(cmd) 执行 bat 文件。 2)创建一个服务来执行bat文件。(我已经创建了一个进程)。
两个输出不同。
我认为注册表访问仅限于服务。那么如何以管理员身份创建服务或启动服务,例如 cmd 作为管理员。
【问题讨论】:
一个服务通常在本地系统帐户下运行,可能有另一组从管理员帐户安装的应用程序。此外,查询注册表是向系统询问已安装应用程序的错误方法。 您的问题诊断错误。第一步,正确诊断问题。第 2 步,考虑可能的解决方案。您需要在继续之前完成第 1 步。 【参考方案1】:您需要使用CreateService 函数。如果您使用nullptr
作为lpServiceStartName
的参数,那么它将以管理员身份运行。
【讨论】:
来自CreateService: "lpServiceStartName: 如果此参数为NULL,CreateService 使用LocalSystem account。" 这是不是管理员帐户.我不知道为什么有人会赞成一个实际上不正确的答案。 @IInspectable 我没有说管理员帐户。它具有管理员权限。 “它将以管理员身份运行” - 这是不正确的。如文档所述,它将作为本地系统运行。这是与管理员环境不同的环境。以上是关于如何从 C++ 代码创建具有管理员权限的服务的主要内容,如果未能解决你的问题,请参考以下文章