
В более ранних версиях Windows при сбое приложения я получал диалоговое окно с надписью «<app> has stopped working». Однако в Windows 10 я обычно не вижу этого диалогового окна — приложение просто закрывается, а служба отчетов об ошибках Windows ( WerFault.exe
) сообщает о сбое. (Это диалоговое окно все еще может появляться для приложений переднего плана, но я обычно не вижу его для приложений Магазина Windows, фоновых приложений или системных приложений, таких как Проводник Windows. Кроме того, поведение может зависеть от того, установлен ли отладчик, такой как Visual Studio.)
Я не могу не думать, что Microsoft либо
- пытается помешать пользователям помешать 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
, но это не так, если политика не настроена.
Если вы не хотите использовать редактор групповой политики, запустите редактор реестра и в разделе HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting
создайте DWORD DontShowUI
значение 0.
Я думаю, преимущество использования редактора групповой политики заключается в том, что настройка сохранится после крупного обновления компонентов Windows, тогда как настройка реестра может быть утеряна.
Мне также интересно, какова официальная версия по этому поводу.
решение2
Параметр политики, предложенный в ответе @BIOSCMOS, по-прежнему влияет только на процессы, отображающие пользовательский интерфейс. WER в Windows 10 никогда не показывает диалоговое окно при сбое невидимого процесса, независимо от значения DontShowUI
. Я искал усердно, но не смог найти аналогичный параметр для невидимых процессов.
Поэтому я написал инструмент, который подключается к WER и изменяет его поведение, чтобы отображать диалоговое окно для всех сбоев, включая те, что происходят в невидимых процессах:WerTweak. Плюсом является то, что WER отображает тот же старый диалог отчета о сбоях, что и в предыдущих версиях Windows, вместо урезанного нового диалога, который обычно отображается в Windows 10.