我想禁用(在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下没有出现崩溃对话框!
答案 0 :(得分:5)
禁用崩溃框的最佳方法是删除导致程序崩溃的任何代码。对于正确的程序,此框将永远不会出现。
修改:至于您对SetErrorMode
的调用究竟出了什么问题,应该是:
SetErrorMode(SetErrorMode(SEM_NOGPFAULTERRORBOX)
|SEM_FAILCRITICALERRORS|SEM_NOGPFAULTERRORBOX);
或类似的。我认为你误读了你在评论中引用的博客文章。