Используйте классы 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 для проверки состояния службы.