如何使用“sc”安装服务并在恢复下指定“后续失败”为“无操作”

19

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

我想让“恢复”选项如下所示:

  • 第一次故障:重新启动
  • 第二次故障:重新启动
  • 后续故障:不执行任何操作

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

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

但是在GUI中查看服务时,“Subsequent Failures”也被设置为重新启动。我在SO上找不到任何具体的信息。最终,我解决了这个问题,并在这里发布,以防其他人正在寻找与我相同的“快速”答案。当然,如果有人有什么贡献,我很乐意阅读。

2个回答

32

最终我想通了要这样运行命令:

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

我曾经这样做过,重新打开服务属性GUI后,“不采取任何行动”显示为我想要的方式。

在我开始写问题之后,我终于找到了这个SO问题:https://dev59.com/GWw15IYBdhLWcg3w1vWB#12631379

虽然它不是直接回答这个问题的。


14
为了补充这个回答,sc命令非常挑剔,你需要做几件事情:
  1. 同时提供'reset'和'actions'
  2. 每个选项后面都必须有一个空格,比如reset= <number>
  3. 'action'不能不提供选项(尽管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                 :

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接