2

アプリケーションからプロセスを開始して監視します。 クラッシュまたはハングすることがあります。呼び出されたプロセスのクラッシュしたアプリケーションダイアログを無効にする

このために監視アプリケーションが用意されており、これを処理できます。

クラッシュ時に、ウィンドウにアプリケーションクラッシュダイアログが表示されます。 この時点で、クラッシュしたプロセスはまだプロセスリストにあります。 しかし、プロセスが監視アプリケーションによって終了される場合は、ダイアログは消えません(タイムアウト後にはTerminateProcess)。

WerAddExcludedApplicationWerRemoveExcludedApplicationを使用してこのアプリケーションのWindowsエラー報告を無効にしようとしましたが、これは解決策をオンラインで検索するオプションを削除するだけです。

また、WERを完全に無効にしたくない場合もあります。

特定の実行可能ファイルに対してこのダイアログをプログラムで無効にする別の方法はありますか(必ずしも同じではありません)。

+0

[WerRegisterRuntimeExceptionModule](https://msdn.microsoft.com/en-us/library/windows/desktop/dd408167.aspx) – IInspectable

+1

'SetErrorMode'は継承されているので、子を起動する前に親のエラーモードを' SEM_NOGPFAULTERRORBOX'に設定してください。 –

+0

ErrorModeの設定を変更しても何も変更されません。 –

答えて

0

あなたが探しているのはDontShowUIレジストリキーだと思います。これにより、Windowsエラー報告(WER)が有効になり、未処理の例外では何もポップしません。

DontShowUI(REG_DWORD)可能な値:

0 -

1 UI(デフォルト) - 無UI(WERのUIを有効または無効)WERのレジストリ設定に

リンク:https://msdn.microsoft.com/en-us/library/windows/desktop/bb513638(v=vs.85).aspx

これをレジストリ(またはHKEY_CURRENT_USERにも設定可能):

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting] 
"DontShowUI"=dword:00000001 

このキーを設定してもまだ処理されていない例外のダイアログボックスが表示されている場合は、レジストリで値= DontShowUIを検索することをお勧めします。

+1

これは、ローカルな問題に対するグローバルな解決策です。 –

+0

IamとRaymond Chenとこれに。私は本当にグローバルなシステムの振る舞いを変えたくありません。私はまた私の質問でこれを述べた。 –

+0

。その場合、私は大きな解決策は考えられません。実行中の特定の時刻にそのレジストリキーを設定したり解除したりすることができますが、それは回避策であり、非常に良い方法ではありません。 – PerryC

関連する問題