问题描述
项目中需要使用第三方的应用,但是该应用运行不太稳定,于是就需要守护进程保证它一直运行。在 Windows 7 及以后的系统中,程序崩溃后,系统会弹出一个“ XXX 已停止工作” 的对话框,如果不在这个对话框点击“关闭程序”,这个窗口就会一直存在,崩溃的进程并没有真正结束,还是一直挂起在那里。这就造成守护进程失效了;Windows如何禁止弹出“停止工作”对话框?
解决方法
通过任务管理器查找到这个“XX已停止工作”的对话框属于WerFault进程,通过查阅资料了解到这是Windows错误报告的服务,根据网上资料:https://msdn.microsoft.com/en-us/library/windows/desktop/bb513638(v=vs.85).aspx 可以看出,有很多选项可以配置。
注册表: HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\Windows Error Reporting 分支下
- DontShowUI 选项表示是否显示 “XXX 已停止工作” 的对话框。
- Disabled 表示是否禁用Windows错误报告服务。
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting] "DontShowUI"=dword:00000001 "Disabled"=dword:00000001 "LoggingDisabled"=dword:00000001 "DontSendAdditionalData"=dword:00000001
将以上内容保存为reg文件,导入即可,当然也可以 regedit 找到手动修改;
注意: 这个修改会对系统所有程序禁用Windows错误报告服务,如果只想对指定程序禁用Windows错误报告服务,可以查阅上面链接中的文档,通过添加注册表分支ExcludedApplications来实现。