2010-04-05 115 views
0

的条件是 - 我没有管理员权限 - 我希望看到远程计算机(服务器)查看状态

我使用下面的代码一个服务的状态( vb.net与框架2.0),看状态

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

我没有看到这种代码可以引发InvalidOperationException异常的方式。你最好发布这个异常的StackTrace。 – 2010-04-05 18:01:52

回答

1

您不必是远程计算机上的管理员,但您确实需要对要监视的特定服务至少具有SERVICE_QUERY_STATUS权限。本地管理员组拥有此功能,Power Users也是如此。或者你也可以创建一个组,并与subinacl.exeSecurity Templates

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