faultrep.dll 是 Windows 错误报告(Windows Error Reporting,WER)体系中承担故障上报职责的关键动态链接库,它并不面向普通用户直接交互,却在每一次应用程序崩溃的背后默默工作。理解它的功能边界,有助于解释许多“程序闪退却查不到原因”的现象。
该文件默认位于 %SystemRoot%\System32 目录,64 位系统中另有一份位于 SysWOW64。它以 DLL 形式向外暴露一组 C 风格导出函数,是崩溃事件从“进程内部异常”转化为“可上报故障报告”链路上的第一环。
1. 故障捕捉入口
导出 ReportFault、ReportFaultWithParams 等函数。当进程抛出未处理异常(如 0xC0000005 访问冲突、0xC0000374 堆损坏)时,异常分发流程会调用该接口,把异常上下文交给 WER 处理。
2. 异常元数据采集与封装
收集异常代码、异常地址、出错模块名与模块偏移、模块时间戳与版本号、进程 ID、线程 ID、调用栈回溯等信息,并按 WER 协议序列化封装为报告数据。
3. 转储文件生成
与 dbghelp.dll 等组件配合,调用 MiniDumpWriteDump 生成 minidump 小型转储,为后续调试与根因分析保留现场。
4. 报告队列管理
将打包结果写入 %ProgramData%\Microsoft\Windows\WER\ReportQueue,上传或归档后转入 ReportArchive,并维护 ReportID 与故障签名。
5. 排除列表与兼容接口
提供 AddERExcludedApplication 等接口,允许把指定应用加入错误报告排除名单,避免其反复触发弹窗。
6. 与 WerFault.exe、WerSvc 协同
配合 WerFault.exe 完成用户界面提示、报告上传以及“联机检查解决方案”逻辑,构成完整的错误报告闭环。
ReportFault 调用失败,崩溃进程无法触发错误报告对话框,表现为程序静默退出。常见弹窗为“计算机中丢失 faultrep.dll”;执行 sfc /scannow 与 DISM /Online /Cleanup-Image /RestoreHealth 可修复多数因文件损坏导致的缺失;使用 Dependency Walker 类工具检查时,faultrep.dll 常显示为缺失导入项,这通常意味着某一上层组件的依赖链已断裂。