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