查看在远程计算机上运行的服务的状态

时间:2010-04-05 16:31:51

标签: vb.net servicecontroller

条件是 - 我没有管理员权限 - 我想在远程机器(服务器)中看到服务的状态

我使用以下代码(带框架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,发现我需要管理员直接使用管理员。

我是否可以在远程计算机上没有管理员权限的情况下查找服务的状态?

2 个答案:

答案 0 :(得分:1)

您不必是远程计算机上的管理员,但您至少需要对要监视的特定服务具有SERVICE_QUERY_STATUS权限。与Power Users一样,本地Administrators组具有此功能。或者,您可以使用subinacl.exeSecurity 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