禁用“应用程序已停止工作”窗口

我们得到了一个.NET WCF服务,理想情况下应该是100%的正常运行时间。 但是有时我们的应用程序中有一些内存泄露问题,这些问题是由第三方数据库连接组件引起的。 我们configurationnnCron来监视进程是否存在,当该服务的进程退出时,应该再次启动它。

但是,当应用程序崩溃的窗口popup一个嘈杂的窗口,通知该应用程序已经崩溃。

这里是:

在这里输入图像说明

只有当我们点击愚蠢的“closures程序”button时,进程才真正从系统中消失。 只有在nnCron重新启动服务之后。 我们不想监视这个窗口出现,只是想摆脱它的nnCron成功的工作。

那么我们如何禁用这样的窗口?

操作系统是Windows Server 2008 r2 Standard。

我知道这是一个古老的问题,但我遇到了同样的问题,并找到了解决办法。

在您的应用程序开始时调用以下内容:

SetErrorMode( SEM_FAILCRITICALERRORS | SEM_NOGPFAULTERRORBOX ); 

我已经尝试了一个非常简单的测试应用程序,试图解引用空指针。 没有上面的行,我的测试应用程序将显示“…已停止工作对话框”。 用上面的这行代码,应用程序只是静静地死去。

参考文献:

  • 对话框过滤Windows Embedded Standard 7
  • MSDN:SetErrorMode函数
  • pinvoke.net:SetErrorMode

编辑:这里是一个选项禁用该系统范围的对话框,无需修改代码。 创建以下注册表值作为REG_DWORD并将值设置为1:

 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\DontShowUI 

参考: WER设置