在早期版本的 Windows 中,当应用程序崩溃时,我会收到一个对话框,提示“<app> 已停止工作”。但是在 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
,但如果未配置策略,这似乎并不正确。
如果您不想使用组策略编辑器,请运行注册表编辑器并在键下HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting
创建DWORD DontShowUI
值为 0 的值。
我认为使用组策略编辑器的好处是该设置将在 Windows 重大功能更新后保留下来,而注册表设置可能会丢失。
我也想知道官方对此有何说法。
答案2
@BIOSCMOS 在回答中建议的策略设置仍然只对显示用户界面的进程有影响。无论值如何,Windows 10 上的 WER 在不可见进程崩溃时都不会显示对话框DontShowUI
。我仔细寻找,但找不到类似的不可见进程设置。
因此,我编写了一个工具,将其自身挂接到 WER 中并修改其行为以显示所有崩溃的对话框,包括不可见进程中的崩溃:调整。另外,它使 WER 显示与以前的 Windows 版本相同的旧式崩溃报告对话框,而不是 Windows 10 中通常显示的残缺的新对话框。