中堅プログラマーの備忘録

忘れっぽくなってきたので備忘録として・・・

windowsアプリケーションでクラッシュ時のエラーダイアログを表示しないようにする。

1.概要

【アプリケーション名】は動作を停止しました。
のようにアプリケーションが予期せぬ原因でクラッシュしてしまうことがあります。
f:id:tsu--kun:20190924152631p:plain


実は運用上、勝手に死んでくれた方がいいという状況がありました。
その時の対策になります。

2.Windows Error Reporting

エラーダイアログが表示される原因ですが
【Windows Error Reporting】が有効になっている為です。
これは何かというと
エラーが起きた時にダンプファイルをMicrosoft WER サイト送っているそうです。

3.エラーダイアログを表示しないように設定する

レジストリの下記の値に【1】を設定することで、ダイアログを表示することなくアプリケーションが勝手に死んでくれます。

HKEY_CURRENT_USER\Software\Microsoft\Windows\Windows Error Reporting\ForceQueue 

設定手順

①【Windows】+【R】で【ファイル名を指定して実行】を開き
【regedit】と入力し【レジストリエディタ】を開きます。
f:id:tsu--kun:20190924154320p:plain


②【Windows Error Reporting】まで移動し
右クリックで
【新規】→【DWORD(32ビット)値】をクリックします。
f:id:tsu--kun:20190924154330p:plain


③名前を【ForceQueue】に変更し【データ】を【1】に変更します。
f:id:tsu--kun:20190924154337p:plain


これで完了になります。

この値はデフォルトでは【0】なのですが
【1】に設定することでダンプファイルをMicrosoft WER サイトに送らず
ローカルに保存するようになります。