Как использовать "sc" для установки службы и указать действие для "последующих сбоев" при восстановлении

Я создал службу в VB.NET и хотел использовать программу " sc " для ее установки. (Мне нужно было упаковать его, чтобы кто-то другой в моей организации мог выполнить фактическую установку.)

Я хотел, чтобы параметры "восстановление" выглядели следующим образом:

  • Первая Ошибка: Перезагрузка
  • Второй Сбой: Перезагрузка
  • Последующие Сбои: Ничего Не Делать

это команда, которую я изначально пытался (после фактического установить):

sc failure MyServiceName reset= 86400 actions= restart/15000/restart/30000

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

2 ответов


Я в конце концов понял, чтобы запустить команду следующим образом:

sc failure MyServiceName reset= 86400 actions= restart/15000/restart/30000//1000

Как только я сделал это и повторно открыл GUI свойств службы, "не предпринимать никаких действий" было показано, как я хотел.

после того, как я начал писать вопрос, я, наконец, нашел этот вопрос SO: https://stackoverflow.com/a/12631379/1812688

хотя, это не было прямым ответом на вопрос


чтобы расширить этот ответ, команда СК тупо нетривиальными, и вам нужно сделать пару вещей:

  1. вы должны предоставить "сброс" и "действия" в то же время
  2. вы должны иметь пробел после каждого варианта, так reset= <number>, etc
  3. вы не можете предоставить никаких опций для " действия "(несмотря на то, что документация по sc.exe утверждает), но вы можете указать пустые значения, разделенные косой чертой. Все эти 3 команды сделают так, что есть никаких действий ни для одной из 3 попыток
    • sc failure EraAgentSvc reset= 86400 actions= //
    • sc failure EraAgentSvc reset= 86400 actions= ////
    • sc failure EraAgentSvc reset= 86400 actions= //////

и эти команды в конечном итоге получат результат от 'sc qfailure':

C:\Users\Administrator>sc qfailure EraAgentSvc
[SC] QueryServiceConfig2 SUCCESSSERVICE_NAME: EraAgentSvc
        RESET_PERIOD (in seconds)    : 86400
        REBOOT_MESSAGE               :
        COMMAND_LINE                 :