Просмотр статуса службы, запущенной на удаленной машине - PullRequest
0 голосов
/ 05 апреля 2010

Условия - У меня нет прав администратора - Я хочу видеть статус службы на удаленном компьютере (сервере)

Я использую следующий код (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 поднимается и обнаруживает, что мне нужны права администратора на сервере.

Могу ли я посмотреть статус службы без прав администратора на удаленном компьютере?

Ответы [ 2 ]

1 голос
/ 05 апреля 2010

Вы можете получить два типа 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
1 голос
/ 05 апреля 2010

Вам не нужно быть администратором на удаленной машине, но вам нужно как минимум разрешение SERVICE_QUERY_STATUS для конкретной службы, которую вы хотите отслеживать. Локальная группа администраторов имеет это, как и опытные пользователи. Или вы можете создать группу и предоставить ей разрешение с помощью subinacl.exe или Шаблоны безопасности

...