我有一个应用程序托管了一些不稳定的第三方代码,我无法在外部进程中控制这些代码,以保护我的主应用程序免受它出现的严重错误的影响。我的父进程正在监视另一个进程并在它失败时做“正确的事情(tm)”。
我遇到的问题是,Watson 博士仍在检测隔离进程中的崩溃,并在下行过程中附加到进程以进行崩溃转储。这有两个问题: 1. 大大减慢了我检测故障所需的时间,因为在进行故障转储时进程保持活动状态。2. 向用户显示烦人的弹出窗口,询问他们是否要将错误报告提交给 Microsoft。
显然,我更愿意修复子进程中的错误,但鉴于这不是一个选项,我希望能够有选择地禁用该进程的 Dr. Watson(以及 Vista+ 中的 Windows 错误报告)。
在移交给不受信任的位之前,我在进程中运行了一些我自己的代码,所以如果有一个我可以调用的 API 会影响当前进程,那很好。
我知道: http: //support.microsoft.com/default.aspx/kb/188296这将禁用整个机器的 Watson 博士。我不想这样做,因为它会让我成为一个坏公民,破坏机器范围的设置。
我也知道 Vista+ 中的 WerSetFlags 选项似乎会禁用当前进程的 Windows 错误报告,但我需要一些能够在早期操作系统版本上禁用 Dr.Watson 的东西。