Yuan天空
Yuan天空
  • 我的主页
  • 博客随笔
  • 软件作品
    • TK精灵(进程守护)
    • 远程运维助手
    • DicomStoreSCU
    • TKOCR(离线OCR)
    • 更多...
  • 学习资源
  • 网址收藏
  • HTML模板
一个不专业的.NET开发者博客
  1. 主页
  2. 博客
  3. 发布页

.Net程序奔溃后,弹出了“停止工作”对话框问题 屏蔽办法

.NET停止工作注册表WindowsEr
Windows运维 2021-07-28 221

.Net程序奔溃后,弹出了“停止工作”对话框问题,windows如何关闭错误弹窗让程序直接退出的方法

最近一个项目出了点小问题,某个前置小程序运行一段时间后就出现异常直接弹出系统错误提示窗口,问题定位可能调用个一个C++库引发的异常,因为身边没有人懂这块所以目前无法解决,好在程序异常关闭只需要手动重启就可以重新运行,循着这个逻辑自己做了一个监护程序,检测小程序运进程是否存在,根据情况自动重启它。 但实际过程中有个问题很坑,就是系统的那个异常信息弹窗 “某某某 已停止工作”,会阻止程序退出,也就是程序崩溃了进程依然在导致监护程序无法正常工作,小程序层面试了很多办法都行不通,这个弹窗始终无法屏蔽,最终找到了一个修改系统注册表的方法屏蔽掉了这个弹窗

以下是具体的操作方法

网上是这么说的:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting 分支下的DontShowUI和Disabled选项。 其中DontShowUI选项表示是否显示“XX已停止工作”的对话框,Disabled则表示是否禁用Windows错误报告服务。经过测试,如果只开启DontShowUI,程序再奔溃时,虽然不会弹出停止工作的对话框了,但错误报告服务仍然在运行,所以奔溃进程会过几秒才消失。如果开启了Disabled则程序奔溃时,进程迅速消失。

实际操作下来,发现这个注册表项下面没有 DontShowUI和Disabled这两个选项

于是在注册表搜索了下 “Windows Error Reporting” 最终发现在HKEY_CURRENT_USER 下面分支下也存在同名的项 也找到了上述的两个选项 于是按照上面的资料把DontShowUI修改成1(Disabled我这边没修改 目前已经满足当前的需求了)

.Net程序奔溃后,弹出了“停止工作”对话框问题 屏蔽办法

上面的办法有个缺点就是 需要修改注册表附带的就需要重启服务器才能生效 但正常业务运作的服务器 是不能随便重启的

可以考虑下面的方案 就是通过对弹窗进程(WerFault.exe)进行监控 当出现该进程时 直接Kill掉就可以了

然后守护程序就可以正常运作了 我的测试服务器环境是Windows Server 2016以及2008 R2

文章相关exe监护工具 : TK精灵(EXE进程守护)

相关文章推荐
01. .NET Core Web网站wwwroot目录静态文件无法加载
02. .NET调用WMI来获取硬件信息时报错无效命名空间问题的解决办法
03. .NET 服务端获取客户端真实ip
04. .NET 5 web环境 Graphics上实现图片实时添加文字水印效果
05. .NET 5 依赖注入AddTransient瞬时模式简单例子
06. System.BadImageFormatException: 未能加载文件或程序集 解决办法
07. FastReport .NET 导出jpg图像打印模糊的解决办法
问题反馈/学习建议
1. 文明上网,理性表达,营造舒适的学习氛围
2. 请不要反馈提交与本页主题无关内容
相关服务/资源推荐
C# .NET WPF UI界面控件库源码|控件源码|
Loading...
相关资源推荐
01. .NET csharp医疗胶片患者识别号文字区域检测例子