【发布时间】:2011-09-17 12:06:24
【问题描述】:
我想禁用(在 VS2010 C 程序中)发生 GPF 时屏幕上弹出的崩溃对话框窗口(你知道 xxx.exe 停止工作)
我在win2008和win7上试过:
- SetErrorMode(SetErrorMode(SEM_NOGPFAULTERRORBOX)|SEM_FAILCRITICALERRORS);
- try/catch (with SEH, but some parts of the code aren't wrapped in)
- SetUnhandledExceptionFilter()
没有任何效果......仍然有这个该死的窗口
我是不是忘记了什么?
唯一有效的是修改注册库中的“DontShowUI”键 (HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Windows 错误报告) 但它只是不干净,我更喜欢“编码”解决方案(而且我不能将寄存器更改为我的代码!)
你有什么想法吗? (当然除了修复程序本身以避免 GPF :)
谢谢...
注意:有趣的是,在 Cygwin 下不会出现崩溃对话框!
【问题讨论】:
-
SetErrorMode(SetErrorMode(?真的吗? -
您的评论没有帮助,请阅读:blogs.msdn.com/b/oldnewthing/archive/2004/07/27/198410.aspx。另一个(更好的)想法?谢谢
-
如何使用 WerAddExcludedApplication() (msdn.microsoft.com/en-us/library/windows/desktop/…) 为您的应用程序禁用它?
-
或者如果您只想禁用 UI 但保留 WER 功能,您可以尝试 WerGetFlags()/WerSetFlags() 来关闭 WER_FAULT_REPORTING_ALWAYS_SHOW_UI 标志。
标签: c windows visual-studio visual-studio-2010 cygwin