在C中禁用崩溃对话框

Ste*_*tef 2 c windows cygwin visual-studio-2010 visual-studio

我想禁用(在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()
Run Code Online (Sandbox Code Playgroud)

什么都行不通......还是这个该死的窗户

我忘了什么吗?

唯一有效的是修改注册库中的"DontShowUI"键(HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Windows错误报告),但它只是不干净,我更喜欢"编码"解决方案(我不能改变注册我的代码!)

你有好主意吗 ?(除了修复程序本身以避免GPF当然:)

谢谢...

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

R..*_*R.. 5

禁用崩溃框的最佳方法是删除导致程序崩溃的任何代码.对于正确的程序,此框永远不会出现.

编辑:至于你的电话实际上有什么问题SetErrorMode,它应该是:

SetErrorMode(SetErrorMode(SEM_NOGPFAULTERRORBOX)
    |SEM_FAILCRITICALERRORS|SEM_NOGPFAULTERRORBOX);
Run Code Online (Sandbox Code Playgroud)

或类似的.我认为你误读了你在评论中引用的博客文章.