メイン アプリケーションを厄介なエラーから保護するために、外部プロセスで制御できない不安定なサードパーティ コードをホストしているアプリケーションがあります。私の親プロセスは他のプロセスを監視しており、失敗したときに「正しいこと (tm)」を実行しています。
私が抱えている問題は、ワトソン博士がまだ分離されたプロセスでクラッシュを検出し、途中でプロセスにアタッチしてクラッシュ ダンプを取得していることです。これには次の 2 つの問題があります。 1. クラッシュ ダンプが取得されている間もプロセスが存続するため、障害を検出するのにかかる時間が劇的に遅くなります。2. Microsoft にエラー レポートを送信するかどうかを尋ねる迷惑なポップアップをユーザーに表示します。
明らかに、子プロセスのバグを修正したいと思いますが、それがオプションではないことを考えると、そのプロセスのワトソン博士 (および Vista 以降の Windows エラー報告) を選択的に無効にできるようにしたいと考えています。
信頼できないビットに引き渡す前に、プロセスで独自のコードの一部を実行しているため、現在のプロセスに影響を与える呼び出し可能な API があれば問題ありません。
私は知っています: http://support.microsoft.com/default.aspx/kb/188296これにより、マシン全体でワトソン博士が無効になります。マシン全体の設定を台無しにするのは悪い市民になるので、私はそれをしたくありません。
また、現在のプロセスの Windows エラー報告を無効にするように見える Vista+ の WerSetFlags オプションも認識していますが、以前の OS バージョンで Dr.Watson を無効にするものが必要です。