
以前のバージョンの Windows では、アプリがクラッシュすると、「<アプリ> は動作を停止しました」というダイアログが表示されていました。しかし、Windows 10 では通常、このダイアログは表示されません。アプリは単に終了し、Windows エラー報告サービス ( WerFault.exe
) がクラッシュを報告します。(このダイアログはフォアグラウンド アプリでは引き続き表示されますが、Windows ストア アプリ、バックグラウンド アプリ、または Windows エクスプローラーなどのシステム アプリでは通常表示されません。また、動作は Visual Studio などのデバッガーがインストールされているかどうかによっても異なります。)
マイクロソフトは
- プライバシーを犠牲にしてテレメトリに頼って製品を改善する戦略の一環として、ユーザーがWERによるクラッシュ報告を阻止できないようにする、または
- アプリケーションがクラッシュしたときにユーザー入力の必要性がなくなります。これは、場合によっては問題になることがあります。つまり、「動作を停止しました」というダイアログが表示された場合、クラッシュしたアプリケーションは、ユーザーがエラー ダイアログを閉じるまで実際には終了しません。これは、多くのフルスクリーン ゲームのように、アプリケーションがマウスをフックしている場合は不可能な場合があります。
いずれにせよ、この変更に関する公式ソースを見つけることができませんでした。この変更は設計によるものですか? また、レジストリの変更やその他の手段でこのダイアログを再度有効にできるものはありますか? 理想的な回答には、公式の Microsoft ソースへの参照が含まれています。これは意見に基づく質問ではありません。
答え1
古い動作を再度有効にする方法を見つけました。
グループ ポリシー エディターの使用:
- 走る
gpedit.msc
- ローカルコンピュータポリシー > コンピュータの構成 > 管理用テンプレート > Windowsコンポーネント > Windowsエラー報告に移動します。
Prevent display of the user interface for critical errors
に設定Disabled
。
設定のヘルプには と記載されているため間違っていることに注意してくださいIf you disable or do not configure this policy setting, Windows Error Reporting displays the user interface for critical errors
。ただし、ポリシーが構成されていない場合は、これは当てはまらないようです。
グループ ポリシー エディターを使用しない場合は、代わりにレジストリ エディターを実行し、キー の下に値 0 のHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting
を作成しますDWORD DontShowUI
。
グループ ポリシー エディターを使用する利点は、レジストリ設定は失われる可能性があるのに対し、設定は主要な Windows 機能更新後も保持される点だと思います。
これに関して公式発表がどうなっているのか、私も気になります。
答え2
@BIOSCMOS の回答で提案されているポリシー設定は、依然としてユーザー インターフェイスを表示するプロセスにのみ影響します。Windows 10 の WER では、値に関係なく、非表示のプロセスがクラッシュしたときにダイアログが表示されることはありませんDontShowUI
。一生懸命探しましたが、非表示のプロセス用の同様の設定は見つかりませんでした。
そこで私は、WER にフックしてその動作を変更し、非表示のプロセスでのクラッシュも含め、すべてのクラッシュのダイアログを表示するツールを作成しました。ワーツイークさらに、WER では、Windows 10 で通常表示される機能不全の新しいダイアログではなく、以前の Windows バージョンと同じ古いスタイルのクラッシュ レポート ダイアログが表示されるようになります。