7

如何在没有管理员权限的情况下启动和停止窗口服务?

我的应用程序启动应该以与关闭后必须停止的方式相同的方式启动我的服务。我可以使用“服务控制器”来做到这一点

我可以使用管理员权限安装服务,但启动和停止服务不应该询问管理员权限。

谁能告诉我如何使用 c# 实现这一目标?

4

1 回答 1

3

我发现了授予非管理员用户启动/停止服务的权限的方法。我们可以为我们的服务提供组策略,这样就可以在没有管理员权限的情况下启动/停止。我找到了两种方法来完成这项任务。

方法1:

  1. 从“mmc.exe”创建控制台
  2. 创建空白安全模板
  3. 创建了一个安全数据库来存储策略信息
  4. 将服务权限更改为我们要授予权限的用户
  5. 应用了新的安全权限(我参考了这个博客

这种方法效果很好,我在一个虚拟机中创建了两个非管理员用户帐户并设置了管理员帐户的权限,我可以从两个非管理员用户帐户启动和停止服务。然而,这种方法并不是解决问题的完整方法,它涉及很多手动步骤。所以我开始寻找自动化这个过程。结果我找到了方法2

方法 2:使用“Subinacl.exe”授予权限,SubInACL 是一个命令行工具,使管理员能够获取有关文件、注册表项和服务的安全信息,并在用户之间、本地或全局组之间传输这些信息分组,以及从域到域。

我遵循了创建两个非管理员用户帐户并执行命令 SUBINACL /SERVICE \DomainName\MyService /GRANT=DomainName\USERS=TOP 的相同示例,因此这将授予用户启动/停止服务的权限。

于 2012-06-05T13:39:05.567 回答