Windows程序奔溃后,禁止弹出“停止工作”对话框
2018-03-14 15:43
513 查看
在Win7及以后的系统中,如果一个程序发生了奔溃,系统会弹出一个“XX已停止工作”的对话框,如果不去这个窗口上点击“关闭程序”,那么这个窗口会一直存在,最为关键的是,奔溃的进程并没有真正结束,还一直挂起在那里。这在自动化无人值守程序开发中是不允许的,有时候有的程序只能运行一个实例,如果奔溃的这个进程一直没有真正结束,新进程就无法启动。一开始我们想到的解决方案是去模拟点击这个“XX已停止工作”的对话框,不过这样实在是太LOW了。 通过任务管理器查找到这个“XX已停止工作”的对话框属于WerFault进程,通过查阅资料了解到这是Windows错误报告的服务,根据网上资料,在Windows服务管理器中关闭这个错误报告服务,仍然会弹出停止运行的对话框。最后在MSDN上找到了Windows的错误报告服务配置说明:https://msdn.microsoft.com/en-us/library/windows/desktop/bb513638(v=vs.85).aspx 从这份文档中可以看出,Windows的错误报告服务的可配置性还是很高的,有很多选项可配置。最终找到关键之处,即注册表的HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting 分支下的DontShowUI和Disabled选项。其中DontShowUI选项表示是否显示“XX已停止工作”的对话框,Disabled则表示是否禁用Windows错误报告服务。经过测试,如果只开启DontShowUI,程序再奔溃时,虽然不会弹出停止工作的对话框了,但错误报告服务仍然在运行,所以奔溃进程会过几秒才消失。如果开启了Disabled则程序奔溃时,进程迅速消失。 如果不想对所有程序禁用Windows错误报告服务,而想只对指定程序禁用Windows错误报告服务,可以查阅上面链接中的文档,通过添加注册表分支ExcludedApplications来实现。 另外值得一提的是HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps分支,创建这个LocalDumps分支后,程序奔溃时会自动创建DUMP文件,方便分析程序程序奔溃原因。这样就不用在你的程序里写保存DUMP文件的代码了。 下面给出一个实用的reg文件,将其复制并保存为reg文件,导入注册表后,这台电脑再有程序奔溃时就不会弹出停止运行窗口了,并且能自动保存DUMP文件。如果不需要保存DUMP文件,去掉最后一行[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps][plain] view plain copyWindows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting]
"DontShowUI"=dword:00000001
"Disabled"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps]
相关文章推荐
- Windows程序奔溃后,禁止弹出“停止工作”对话框
- Windows服务(system权限)程序显示界面与用户交互,Session0通知Session1里弹出对话框(真的很牛) good
- 问题:vc写的windows服务程序,怎么禁止用户停止
- 取消window下应用报错后弹出的对话框程序已停止要求关闭程序对话框
- 如何取消WIN2008下应用报错后弹出的对话框 程序已停止 要求关闭程序
- msn问题 windows live messenger已停止工作,出现了一个问题,导致程序停止正常工作
- qtp10 录制时,弹出Internet explorer已停止工作
- windows程序崩溃对话框和异常处理
- mfc对话框显示和关闭,程序崩溃,弹出中止,重试,忽略的问题
- 微信小程序自定义对话框弹出和隐藏动画
- 离开与关闭程序的弹出窗口(对话框上的Icon图标)
- C# 调试程序弹出 没有可用于当前位置的源代码 对话框
- 微信小程序弹出自定义模态框,禁止底部页面滚动事件
- 如何确定windows右下解弹出的窗口是哪个程序搞的鬼
- 解决:在用户安装”未知来源“应用弹出对话框直接解除禁止,无需切换至设置页面进行勾选“未知来源“才能安装
- 禁止WebBrowser弹出网页对话框
- project:VC运行程序后出现“出现一个问题,导致程序停止正常工作
- QT的一个奇怪问题,设置了Qt::Tool后,点击弹出对话框的确定取消按钮,程序直接退出
- C#弹出选择对话框程序
- 在服务程序中弹出对话框