发现Windows服务的权限设置

时间:2011-04-19 17:45:24

标签: windows-services permissions

我正在设置一个监视其他服务的Windows服务,如果它们断开连接将重新启动它们。出于安全原因,我决定在一个特殊的“服务”帐户上运行此服务,并且对于每个服务,它应该有权访问管理员授予服务帐户的服务。

为了做到这一点,我正在使用“ServiceController”类。我已经能够使用本地计算机服务,但当我尝试连接到计算机上的另一个网络时,我得到一个无效的操作例外。我可以向服务帐户提供“浏览”或“发现”权限吗?

'即使服务帐户已为该特定服务和该特定计算机设置了权限,第一行抛出异常。如果服务“位于同一台机器上

,再次正常工作
services = ServiceController.GetServices(serviceComputer).ToList()
Dim serviceOfInterest As ServiceController = (From service In _
                                                 services.DefaultIfEmpty(Nothing) _
                                                 Where service.ServiceName = "SomeServiceName" _
                                                 Select service).SingleOrDefault()
serviceOfInterest.Start();

1 个答案:

答案 0 :(得分:2)

此处描述了您需要的权限:http://msdn.microsoft.com/en-us/library/ms685981(VS.85).aspx

具体来说,要获得服务列表,您需要SC_MANAGER_ENUMERATE_SERVICE。根据上面链接中的表格,此权限授予:

  • 本地认证用户
  • LOCAL SYSTEM
  • BUILTIN \管理

显然当远程连接前两个选项时,你只剩下一个选项 - 属于本地管理员组的一部分。