C# Windows服务在没有管理员权限的情况下启动和停止

C# Windows服务在没有管理员权限的情况下启动和停止,c#,.net,windows-services,C#,.net,Windows Services,如何在没有管理员权限的情况下启动和停止窗口服务 我的应用程序启动应该以关闭后停止的方式启动服务。我可以使用“服务控制器”来执行此操作 我可以使用管理员权限安装该服务,但启动和停止该服务时不应要求管理员权限 有谁能告诉我如何使用c#实现这一点吗?我发现了一种方法,可以为非管理员用户授予启动/停止服务的权限。我们可以为我们的服务提供组策略,这样就可以在没有管理员权限的情况下启动/停止服务。 我找到了两种方法来完成这项任务 方法1: 从“mmc.exe”创建控制台 < LI>创建空白安全模板 创建了一

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

我的应用程序启动应该以关闭后停止的方式启动服务。我可以使用“服务控制器”来执行此操作

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


有谁能告诉我如何使用c#实现这一点吗?

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

方法1:

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

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


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

    您尝试启动和停止的服务可能重复。您正在使用的操作系统您可以通过授予适当的权限来解决此问题,如:Adam链接中的答案所示。你不能通过C#来解决这个问题(除非你想写一个工具,但是既然
    sc
    已经存在,为什么还要麻烦呢?)@Damien_The_Unsiever:此SC对我来说没有达到预期效果。需要使用管理员权限启动cmd提示符。更多关于来宾帐户的信息无法选择启动或停止。请记住,默认情况下,此权限不授予普通用户是有原因的。您可能正在打开网络中的安全漏洞。