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

System.InvalidOperationExceptionこの呼び出しから、Service {X} was not found on computer '{Y}'またはの 2 種類を取得できますCannot open Service Control Manager on computer '{Y}'. This operation might require other privileges。1 つ目は無効なサービス名が原因で、2 つ目は権限がないか、マシン名が見つからない可能性が高い場合に発生します。

また、必要がない限り、ToString() を使用しないでください。あなたは列挙型を持っています、それを使用してください:

If sqlSvc.Status = ServiceControllerStatus.Running Then
于 2010-04-05T19:07:48.673 に答える
1

リモート マシンの管理者である必要はありませんが、監視する特定のサービスに対して少なくとも SERVICE_QUERY_STATUS 権限が必要です。Power Users と同様に、ローカルの Administrators グループにもこれがあります。または、グループを作成し、 subinacl.exeまたはセキュリティ テンプレートでアクセス許可を付与することもできます

于 2010-04-05T18:11:35.433 に答える