Используйте классы ServiceController и ServiceControllerPermission, чтобы проверить состояние сервиса

Я работаю над приложением, которое проверяет состояние служб, запущенных на удаленной машине. Я хочу сделать это из неадминистративной учетной записи. Учетная запись для запуска приложения может просматривать и проверять состояние служб, запущенных на удаленном компьютере, через "services.msc". Я использую ServiceController Класс для запроса статуса сервиса:

ServiceController controller = new ServiceController(serviceName, machineName);
if (controller.Status != ServiceControllerStatus.Running)
{
   // Do something.
}

Когда я использую учетную запись без прав администратора, приведенная выше строка завершается с исключением "Доступ запрещен". Некоторые блоги предлагают мне использовать ServiceControllerPermission класс для проверки и подтверждения разрешения на службу перед выполнением вышеуказанного кода. Я не получаю никаких исключений, когда пытаюсь Demand или же Assert разрешение на обслуживание.

ServiceControllerPermission permission = new ServiceControllerPermission(ServiceControllerPermissionAccess.Browse, machineName, serviceName);
permission.Demand();

permission.Assert();
if (controller.Status != ServiceControllerStatus.Running)
{
    // Do something.
}

На MSDN не так много информации о требованиях безопасности для ServiceController или же ServiceControllerPermission учебный класс.

Не могли бы вы сказать мне, как правильно использовать класс ServiceController для проверки состояния службы.

0 ответов

Другие вопросы по тегам