条件是 - 我没有管理员权限 - 我想在远程机器(服务器)中看到服务的状态
我使用以下代码(带框架2.0的vb.net)来查看状态
Dim sqlSvc As ServiceController
Svc = New ServiceController(My.Settings.serviceName, My.Settings.machineName)
If sqlSvc.Status.ToString.Equals("Running") Then
displayStatus("success", sqlSvc.Status.ToString)
Else
displayStatus("error", sqlSvc.Status.ToString)
End If
运行代码时,会引发InvalidOperationException
,发现我需要管理员直接使用管理员。
我是否可以在远程计算机上没有管理员权限的情况下查找服务的状态?
答案 0 :(得分:1)
您不必是远程计算机上的管理员,但您至少需要对要监视的特定服务具有SERVICE_QUERY_STATUS权限。与Power Users一样,本地Administrators组具有此功能。或者,您可以使用subinacl.exe或Security Templates
创建一个组并授予其权限答案 1 :(得分:1)
您可以通过此次调用获得两种System.InvalidOperationException
Service {X} was not found on computer '{Y}'
或Cannot open Service Control Manager on computer '{Y}'. This operation might require other privileges
。第一个来自无效的服务名称,第二个来自您没有权限 或更可能 ,无法找到机器名称。
另外,除非必须,否则不要使用ToString()。你有一个枚举,使用它:
If sqlSvc.Status = ServiceControllerStatus.Running Then