如何使用"sc"安装服务,并为恢复中的"后续故障"指定NO ACTION

Ste*_*nco 9 installation service

我在VB.NET中创建了一个服务,并希望使用"sc"程序来安装它.(我需要打包它,以便我组织中的其他人可以执行实际的安装.)

我希望"恢复"选项看起来如下:

  • 第一次失败:重启
  • 第二次失败:重启
  • 后续失败:什么都不做

这是我最初尝试的命令(在实际安装之后):

sc failure MyServiceName reset= 86400 actions= restart/15000/restart/30000
Run Code Online (Sandbox Code Playgroud)

但随后在GUI中查看服务,"后续失败"也被设置为重新启动.我看着SO,找不到具体的东西.我最终想通了,我在这里发布这个以防万一其他人正在寻找同样的"快速"答案.当然,如果有人有任何贡献,我很乐意阅读.

Ste*_*nco 17

我最终想出来像这样运行命令:

sc failure MyServiceName reset= 86400 actions= restart/15000/restart/30000//1000
Run Code Online (Sandbox Code Playgroud)

一旦我这样做,并重新打开服务属性GUI,"不采取行动"显示为我想要的.

在我开始写这个问题之后,我终于找到了这个问题:https: //stackoverflow.com/a/12631379/1812688

虽然,它并没有直接回答这个问题


mgr*_*ndi 9

为了扩展这个答案,sc命令是愚蠢的,你需要做几件事:

  1. 你必须同时提供'重置'和'动作'
  2. 每个选项后你必须有一个空格reset= <number>,等等
  3. 你不能提供'动作'的选项(尽管有关sc.exe声明文件),但你可以提供用斜杠分隔的空值.所有这三个命令都会使它完成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                 :
Run Code Online (Sandbox Code Playgroud)