Windows服务启动和停止没有管理员权限

时间:2012-06-01 12:49:06

标签: c# .net windows-services

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

我的应用程序启动应该以关闭后必须停止的方式启动我的服务。我可以使用“服务控制器”

来做到这一点

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

有人能告诉我如何使用c#实现这个目标吗?

1 个答案:

答案 0 :(得分:3)

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

方法1:

  1. 从“mmc.exe”
  2. 创建控制台
  3. 创建了空白安全模板
  4. 创建了一个安全数据库来存储策略信息
  5. 将服务权限更改为我们要授予权限的用户
  6. 已应用新的安全权限(我提及此blog
  7. 这种方法运行得很好,我在一个虚拟机中创建了两个非管理员用户帐户,并设置了管理员帐户的权限,我可以从两个非管理员用户帐户启动和停止服务。然而,这种方法并不是问题的完整解决方案,它涉及许多手动步骤。所以我开始寻找自动化这个过程。结果我找到了方法2

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

    我按照创建两个非管理员用户帐户的相同示例执行命令SUBINACL / SERVICE \ DomainName \ MyService / GRANT = DomainName \ USERS = TOP,这样就可以授予用户启动/停止服务的权限。