Служба Windows запущена, но процесс исчез в диспетчере задач - PullRequest
0 голосов
/ 29 марта 2011

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

Конечно, процесс должен быть отлажен, но я сейчас ищу обходной путь.

Как мне избежать этой ситуации? Как диспетчер служб в Windows 2000 определяет, запущен ли процесс Windows 2000 или нет?

Ответы [ 2 ]

2 голосов
/ 29 марта 2011

Это, вероятно, означает, что служба потерпела крах. IIRC, старые версии Windows не всегда восстанавливались, когда процесс обслуживания аварийно завершался. Но это было много лет назад, и моя память может быть испорчена.

Лучший способ избежать этой ситуации - выяснить причину сбоя службы и исправить ее.

0 голосов
/ 29 марта 2011

Хотя Ларри, будучи сотрудником Microsoft, вероятно, знает лучше, чем кто-либо еще, я осмелюсь сказать, что вы должны дать ChangeServiceConfig2 с SERVICE_CONFIG_FAILURE_ACTIONS выстрелом.Я работал над устаревшим сервисом, который до рефакторинга часто приводил к сбою.Средство, выбранное моими предшественниками, заключалось в том, чтобы использовать действие сбоя, чтобы вызвать программу, которая (работающая в SYSTEM) затем перезапустила бы службу, как будто ничего не произошло.

Все это работает, только если ваша служба работаетв своем собственном процессе, который я предположил, учитывая то, как вы это описываете.Если ваш сервис реализован в DLL, это будет не работать.

Но я искренне согласен с Ларри, что вы должны исследовать и устранить проблему, а не пытаться ее скрыть.Как уже упоминалось выше, я исправил данную службу, и она не дает сбоев или очень редко сбоит, и все довольны этим решением;)

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