为我的进程禁用Windows错误报告(Dr. Watson)

10 windows windowserror drwatson

我有一个应用程序托管一些不稳定的第三方代码,我无法在外部进程中控制,以保护我的主应用程序免受它所展示的令人讨厌的错误.我的父进程正在监视另一个进程,并在失败时执行"正确的事情(tm)".

我遇到的问题是,Watson博士仍在检测隔离进程中的崩溃,并在下行过程中附加到进程以进行崩溃转储.这有两个问题:1.显着减慢我检测故障所需的时间,因为在进行故障转储时进程保持活动状态.2.向用户显示恼人的弹出窗口,询问他们是否要将错误报告提交给Microsoft.

显然,我更愿意修复子进程中的错误,但鉴于它不是一个选项,我希望能够有选择地禁用Dr. Watson(以及Vista +中的Windows错误报告).

我在流程中运行了一些自己的代码,然后再转到不受信任的位,所以如果有一个我可以调用的API会影响当前进程,那就没问题了.

我知道:http://support.microsoft.com/default.aspx/kb/188296会禁用Dr.Watson整个机器.我不想这样做,因为它会让我成为一个糟糕的公民,无法在机器范围内进行设置.

我也知道Vista +中的WerSetFlags选项似乎会禁用当前进程的Windows错误报告,但我需要一些能够在早期操作系统版本上禁用Dr.Watson的东西.