2012-06-20 2 views
5

У меня есть пользовательская служба Windows с моим собственным обработчиком регистров, как я могу предотвратить ее остановку, когда она получает команду stop из диспетчера служб? Я установил связь между службой и графическим интерфейсом, и я хочу остановить ее только из графического интерфейса, когда я отправляю службу Windows сообщение «останавливаться», когда я пытаюсь остановить его из диспетчера служб Windows. Я работаю в C#Предотвращение остановки службы службы Windows C#

+2

Как насчет того, когда машина выключится? Не удается ли команде остановить службу не из диспетчера служб? – Paparazzi

+1

Не такое ли поражение цели использования службы Windows? –

+3

Ну, я не забочусь о цели, я просто хочу это сделать. – AlexandruC

ответ

11

Ответит ли это на ваш вопрос?

http://bytes.com/topic/c-sharp/answers/444965-prevent-service-stopping

Установите свойство CanStop ложь. Тогда вам понадобится приложение, которое пользователь может использовать для запроса остановки. Затем это приложение будет связываться с вашим сервисом (возможно, через удаленный доступ), и если это условие разрешено, остановите его. Вы должны сделать это, динамически установив «CanStop» в true, затем подключившись к классу ServiceController и выдав команду «Стоп».

+0

Согласитесь, что ваш комментарий не может предотвратить команду останова в OnStop. Я удалил свой ответ. – Paparazzi

+0

безупречный. Просто то, что я искал. – AlexandruC

0

В качестве альтернативы вы можете просто защитить параметры службы (изменить службу DACL), чтобы только специальная учетная запись пользователя (и, возможно, SYSTEM) имела право остановить службу и установить эту специальную локальную учетную запись во время установки.

Ваше управляющее приложение может затем использовать стандартные функции Service Control Manager с этим токеном безопасности специального пользователя, и все будет работать так, как ожидалось, без каких-либо необычных действий.

Смежные вопросы