有时会重新安装 Windows 服务。
我需要一个用户能够启动/停止/重新启动此服务。此用户不是管理员,也不应该是管理员。
如果我使用setacl.exe
它会起作用,甚至我可以使用sc sdset
,但是在重新安装服务后需要再次调用 setacl,但是重新安装服务的进程无权运行 setacl。
有没有办法授予特定用户重新启动具有特定名称的服务甚至所有服务的权利,这些服务通过重新安装服务仍然存在?
如果我能够为用户提供一些“管理服务”的一般权限,那也可以,但我无法确定为此所需的确切权限(如果我将用户添加到管理组,他可以开始/stop 服务,但显然可以做更多的事情)。
由于您已经了解 SetACL,以及如何使用它来允许用户控制服务,您可以简单地使用计划任务定期运行 SetACL。
将任务配置为在重新安装后以最小的间隔重复,即用户无法控制服务的最长可接受时间。
编辑
正如你所说,这有点hacky ;)。
正如 Adam 提到的,另一种选择是使用 GPO 来强制执行 ACL。
对于非标准 Windows 服务,您必须在安装服务的计算机上安装并运行组管理控制台。然后执行以下操作:
重新启动服务的权限相当简单,您可以使用Subinacl.exe /service来分配权限,例如:
support.microsoft.com上的完整列表。
我认为,您遇到的问题是,当 MyServiceName 被删除时,ACL 也会随之删除。您可以通过使用组策略或安全模板来解决此问题,以分配可能存在或不存在的服务的权限。