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

Vin*_* MS 6 .net c# windows-services

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

我的应用程序启动应该启动我的服务,一旦它关闭它必须停止.我可以使用"服务控制器"来做到这一点

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

任何人都可以告诉我如何使用c#实现这一目标?

Vin*_* MS 3

我发现了为非管理员用户授予启动/停止服务权限的方法。我们可以为我们的服务提供组策略,以便无需管理员权限即可启动/停止。\n我找到了两种方法来完成这项任务。

\n\n

方法一:

\n\n
    \n
  1. 从 \xe2\x80\x9cmmc.exe\xe2\x80\x9d 创建控制台
  2. \n
  3. 创建空白安全模板
  4. \n
  5. 创建安全数据库来存储策略信息
  6. \n
  7. 将服务权限更改为我们要授予权限的用户
  8. \n
  9. 应用了新的安全权限(我提到了这个博客
  10. \n
\n\n

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

\n\n

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

\n\n

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

\n