在C中禁用崩溃对话框

我想禁用(在一个VS2010 C程序)崩溃对话框窗口popup在屏幕上时发生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() 

没有任何工作…仍然在这个该死的窗口

我忘记了什么吗?

唯一的工作是修改registry中的“DontShowUI”键( HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows \ Windows Error Reporting ),但它只是不干净,我宁愿一个“编码”解决scheme(我不能改变注册到我的代码!)

你有好主意吗 ? (除了固定程序本身,以避免当然的GPF 🙂

谢谢…

注意:有趣的是,在Cygwin下没有出现崩溃对话框!

Solutions Collecting From Web of "在C中禁用崩溃对话框"

禁用崩溃盒的最好方法是删除导致程序崩溃的任何代码。 这个盒子永远不会出现一个正确的程序。

编辑:至于什么是您的SetErrorMode调用实际上是错误的,它应该是:

 SetErrorMode(SetErrorMode(SEM_NOGPFAULTERRORBOX) |SEM_FAILCRITICALERRORS|SEM_NOGPFAULTERRORBOX); 

或类似的。 我想你误解了你在评论中引用的博客文章。