0

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

我使用以下代码(带有框架 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提出并发现我需要在服务器中拥有管理员权限。

我可以在没有远程机器管理员权限的情况下查找服务状态吗?

4

2 回答 2

1

您不必是远程计算机上的管理员,但您至少需要对要监控的特定服务具有 SERVICE_QUERY_STATUS 权限。本地管理员组具有此功能,高级用户也具有此功能。或者您可以创建一个组并使用subinacl.exe安全模板授予它权限

于 2010-04-05T18:11:35.433 回答
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
于 2010-04-05T19:07:48.673 回答