Windows 7 -禁用关闭程序/调试程序对话框,但崩溃转储和通知用户
本文关键字:崩溃 转储 用户 通知 对话框 调试程序 关闭程序 Windows | 更新日期: 2023-09-27 18:02:44
我正在开发一个商业Windows 7桌面应用程序(有点收缩包装,但不完全是)。该应用程序同时具有Windows服务和WPF用户界面组件。如果我们的应用程序在客户站点失败,我们希望能够捕获有关运行时环境的信息,包括将我们的进程的崩溃转储到转储位置。这些信息可以根据要求转发给我们的支持人员进行进一步调查。我们还想关闭任何Windows错误报告和发送到微软对话框,可能弹出的失败的结果。
重要的是我们只希望它影响我们的应用程序进程。我们不想影响一些全局设置,这会改变客户桌面上所有其他应用程序报告致命错误的方式。
我正在寻找一些在收缩包装应用程序中做这种事情的建议和最佳实践。
我知道如何做到这一点的最好方法是订阅AppDomain.CurrentDomain.UnhandledException
事件。在这里,您将能够使用Win32 API函数MiniDumpWriteDump来创建您自己的迷你转储文件。看看这篇博客文章,看看一个很好的例子。此外,还有ClrDump库。
在你退出UnhandledException处理程序之前,调用Environment.Exit(),你应该不会再看到任何Windows错误对话框了。
我自己还没有实际使用这些迷你转储库,但我很快就会使用。希望这个答案至少能给你一些关键字,你可以把它们输入到谷歌中。