2010-04-05 134 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