Настройки разрешений для обнаружения служб Windows - PullRequest
1 голос
/ 19 апреля 2011

Я настраиваю службу Windows, которая отслеживает другие службы и перезапускает их, если они отключаются.В целях безопасности я решил запустить эту службу для специальной учетной записи «службы», и для каждой службы должен быть доступ к ней, предоставленный учетной записи службы администратором.

Для этого я использую класс "ServiceController".Я смог заставить его работать с локальными компьютерными службами, но когда я пытаюсь подключиться к другой сети на компьютере, я получаю исключение недопустимой операции.Имеется ли разрешение «просматривать» или «обнаруживать», которое я могу дать учетной записи службы?

'Исключение при выдаче первой строки, даже если для учетной записи службы задано разрешение для этой конкретной службы и конкретного компьютера.Опять работает нормально, если служба находится на той же машине

services = ServiceController.GetServices(serviceComputer).ToList()
Dim serviceOfInterest As ServiceController = (From service In _
                                                 services.DefaultIfEmpty(Nothing) _
                                                 Where service.ServiceName = "SomeServiceName" _
                                                 Select service).SingleOrDefault()
serviceOfInterest.Start();

1 Ответ

2 голосов
/ 20 апреля 2011

Необходимые разрешения описаны здесь: http://msdn.microsoft.com/en-us/library/ms685981(VS.85).aspx.

В частности, для получения списка услуг вам необходим SC_MANAGER_ENUMERATE_SERVICE.Согласно таблице в приведенной выше ссылке это разрешение предоставляется:

  • Локальным аутентифицированным пользователям
  • ЛОКАЛЬНАЯ СИСТЕМА
  • BUILTIN \ ADMINISTRATORS

очевидно, что при удаленном соединении отсутствуют первые две опции, у вас остается только одна опция - входить в группу локальных администраторов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...