通过命令行设置 Windows 服务的 'Enable actions for stops with errors' 复选框

Setting a Windows Service's 'Enable actions for stops with errors' check box via command line

我正在尝试寻找一种命令行方法来设置服务属性对话框 Recovery 选项卡中的 Enable actions for stops with errors 复选框。

我知道当我更改复选框的值并点击应用时,注册表中的 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<serviceName>\FailureActionsOnNonCrashFailures 键被修改为 01

但是,系统上的其他内容似乎必须更改,因为手动设置注册表项值不足以在对话框中打开或关闭该复选框 UI,而且还不足以更改 运行 sc qfailureflag <servicename>.

时返回的值

即使运行sc failureflag <servicename> flag=1flag=0也不会改变sc qfailureflag <servicename>返回的值,也不影响UI中的复选框,确实甚至似乎没有更改该注册表项的值,即使选中或取消选中 UI 中的框确实会更改该注册表项的值。

我能找到的唯一一种方法似乎可以影响该标志是否真的 'set',就是单击 UI。单击 UI 会同时更改注册表项和 sc qfailureflag

返回的值

由于我正在尝试编写一个将自动设置此标志的配置脚本,因此无法单击 UI。

如果有人知道系统上还发生了什么变化以设置或取消设置此标志,我很想知道,如果您知道一种自动设置它的方法,那就更好了。理想情况下,PowerShell 和 C# 的某种组合也很棒,但老实说,我会安于只知道我没有看到的系统发生的变化。

我知道您在评论中有答案,但为了让下一个人更容易理解,我做了以下工作:

  //enables actions for stops with errors 
  sc.exe failureflag "my.local.windowsservice" 1  

  //disables actions for stops with errors 
  sc.exe failureflag "my.local.windowsservice" 0