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

Windows运维
240
.NET
停止工作
注册表
WindowsEr

.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进程守护)

Synchronizing configuration...Error: 请求的名称有效,但是找不到请求的类型的数据
尚未安装.Net Framework 4.6.2时出现“无法建立到信任根颁发机构的证书链”解决方法
fo-dicom .net core 如何获取图像bitmap
System.BadImageFormatException: 未能加载文件或程序集 解决办法
.NET程序系统托盘运行出现多个同样的托盘图标的解决方法
.NET Core Web网站wwwroot目录静态文件无法加载
.NET 服务端获取客户端真实ip
.NET 5 web环境 Graphics上实现图片实时添加文字水印效果
 .NET 5 依赖注入AddTransient瞬时模式简单例子
.NET调用WMI来获取硬件信息时报错无效命名空间问题的解决办法
FastReport .NET 导出jpg图像打印模糊的解决办法
win10下怎么关闭.Net程序崩溃后,弹出了“停止工作”系统异常对话框问题
暂无相关内容...
.NET csharp医疗胶片患者识别号文字区域检测例子
【脱机安装包】.net-framework 3.5、4.0、4.5、4.6、4.7、4.8各版本离线包
免责声明 部分转载分享内容若侵犯您的权益,还请 邮件联系 侵删