Windows服务崩溃后可通过四种方法配置自动恢复:一、服务管理器“恢复”选项卡设置重启等动作;二、PowerShell调用WMI修改FailureActions;三、sc命令行工具执行sc failure配置;四、直接编辑注册表中FailureActions等键值。

如果您在Windows中运行某项服务时发生意外崩溃,系统默认可能不会自动响应,导致功能中断。以下是配置该服务在崩溃后自动重启、运行程序或重启计算机的具体操作步骤:
一、通过服务管理器设置恢复选项
此方法直接调用Windows内置的服务属性界面,在“恢复”选项卡中定义服务失败后的三级响应动作,适用于所有可配置恢复策略的Windows服务。
1、右键点击“此电脑”图标,选择“管理”。
2、在“计算机管理”窗口中,依次展开左侧树状菜单中的“服务和应用程序”,然后点击“服务”。
3、在右侧服务列表中,找到目标服务(如Windows Update、Print Spooler等),右键单击该服务,选择“属性”。
4、切换到“恢复”选项卡。
5、在“第一次失败”下拉菜单中,选择重新启动此服务;在“第二次失败”中同样选择重新启动此服务;在“后续失败”中可选重新启动此服务或重新启动计算机。
6、在“重置失败计数”框中输入小时数(例如1),表示在此时间后将重置失败次数统计。
7、勾选“如果服务无法启动,运行以下程序”,并在下方输入完整路径(如C:WindowsSystem32eventcreate.exe /t ERROR /id 999 /l APPLICATION /d "Service crashed")以记录日志或触发脚本。
8、点击“应用”,再点击“确定”保存设置。
二、使用PowerShell命令批量配置恢复策略
该方法适用于需对多个服务统一设置恢复行为的场景,通过PowerShell调用WMI接口修改服务的FailureActions属性,避免逐一手动配置。
1、以管理员身份运行Windows PowerShell。
2、执行以下命令查询目标服务当前恢复配置:
Get-CimInstance -ClassName Win32_Service -Filter "Name='w32time'" | Select-Object Name, StartMode, State
3、定义恢复动作数组(以三次失败均重启服务为例):
$actions = @(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
4、设置服务恢复参数:
$service = Get-WmiObject -Class Win32_Service -Filter "Name='w32time'"
$service.ChangeFailureActions(1, 60, $actions, "LocalSystem", "", 0)
5、验证是否生效:
(Get-WmiObject -Class Win32_Service -Filter "Name='w32time'").FailureActions
通过 SSH 隧道从 Android 设备在互联网上对 Windows PC 实现完整远程控制的设置与使用指南,适用于远程桌面访问、安全 RDP 等。
6、若需为其他服务配置,仅需将命令中'w32time'替换为对应服务名(如'UsoSvc'或'Dhcp')。
三、通过sc命令行工具配置恢复行为
sc是Windows原生命令行服务控制工具,支持直接修改服务的恢复选项,无需图形界面,适合脚本集成与远程部署。
1、以管理员身份运行命令提示符。
2、执行以下命令为指定服务设置首次失败重启、第二次失败重启、后续失败重启,并重置计数周期为60秒:
sc failure w32time reset= 60 actions= restart/1000/restart/1000/restart/1000
3、若需添加自定义程序执行(如写入事件日志),追加command=参数:
sc failure w32time reset= 60 actions= restart/1000/restart/1000/restart/1000 command= ""C:\Windows\System32\eventcreate.exe" /t ERROR /id 1001 /l SYSTEM /d "w32time service crashed""
4、确认配置已写入:
sc qfailure w32time
5、输出结果中应包含RESTART动作及对应延迟毫秒值(如1000表示1秒后执行)。
四、通过注册表手动修正恢复策略
当服务管理器或sc命令因权限限制不可用时,可直接编辑注册表中对应服务的FailureActions键值,实现底层恢复策略写入,适用于离线修复或组策略受限环境。
1、按Win+R打开“运行”,输入regedit并以管理员身份运行。
2、导航至注册表路径:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesw32time
3、在右侧空白处右键→新建→DWORD (32位) 值,命名为FailureActions,双击将其数值数据设为1(启用恢复)。
4、新建一个名为FailureCommand的字符串值,输入要执行的完整命令路径(如C:WindowsSystem32cmd.exe /c echo %date% %time% >> C:ail.log)。
5、新建一个名为ResetPeriod的DWORD值,设为60(单位:秒)。
6、新建一个名为RestartAction的DWORD值,设为1(1=重启服务,2=重启系统,3=运行程序)。
7、关闭注册表编辑器,重启目标服务使配置生效:
net stop w32time && net start w32time

















