【问题标题】:View status of service running on remote machine查看远程机器上运行的服务状态
【发布时间】:2010-04-05 16:31:50
【问题描述】:

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

我使用以下代码(vb.net with framework 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 被提出并发现我需要在服务器中的管理员权限。

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

【问题讨论】:

  • 我看不出这段代码会引发 InvalidOperationException。您最好发布异常的 StackTrace。

标签: vb.net servicecontroller


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    您可以从此调用中获得两种类型的System.InvalidOperationExceptionService {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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-20
      • 1970-01-01
      • 2013-04-22
      • 2010-11-23
      • 1970-01-01
      • 2021-03-04
      相关资源
      最近更新 更多