sfc 和 DISM 是 Windows 自带的两个修复工具,一个管「文件」,一个管「映像」。蓝屏、功能失效、更新失败、开始菜单打不开,都值得先跑一遍。
两者的区别
| SFC(系统文件检查器) | DISM(部署映像服务和管理) | |
|---|---|---|
| 作用对象 | 已安装的 Windows 系统文件 | Windows 映像(组件存储) |
| 修复来源 | 本地组件存储缓存 | Windows 更新 / 指定源文件 |
| 是否需要联网 | 不需要 | RestoreHealth 需要 |
| 耗时 | 10~20 分钟 | 15~40 分钟 |
| 顺序 | 先 SFC,修不好再 DISM,然后再跑一次 SFC | |
第一步:运行 SFC
- 开始菜单搜「cmd」或「PowerShell」→ 右键以管理员身份运行
- 输入:
sfc /scannow
- 等待进度到 100%,看结果:
- 未发现任何完整性冲突:系统文件完好,问题在别处
- 发现损坏文件并成功修复:重启后再用
- 发现损坏文件但无法修复其中某些文件:需要用 DISM(见下)
SFC 必须在管理员权限下运行,否则会提示「必须具有管理员权限」。另外不要在验证百分比还没到 100% 时关闭窗口。
第二步:SFC 修不好时用 DISM
DISM /Online /Cleanup-Image /CheckHealth 快速检查(几秒,只读) DISM /Online /Cleanup-Image /ScanHealth 扫描映像损坏(几分钟) DISM /Online /Cleanup-Image /RestoreHealth 修复映像(十几分钟起,需联网)
按顺序执行,RestoreHealth 是关键的一步。进度条到 100% 后重启,再跑一次 sfc /scannow 确认修复完成。
第三步:查看日志
- SFC 日志:
C:\Windows\Logs\CBS\CBS.log(很大,搜索[SR]定位) - DISM 日志:
C:\Windows\Logs\DISM\dism.log - 快速提取 SFC 结果(管理员 PowerShell):
findstr /c:"[SR]" %windir%\Logs\CBS\CBS.log > "%userprofile%\Desktop\sfclog.txt"
常见报错与解决办法
1. RestoreHealth 卡在 20% / 62.3% 不动
- 正常现象,DISM 会有长时间看似无进展的阶段,耐心等待(最长可达 1 小时)
- 确认网络连接正常
- 可以临时关闭杀软(可能拦截下载)
2. 错误 0x800f0954 / 0x800f0906(无法连接到源)
- 原因:无法从 Windows 更新下载修复源
- 检查是否禁用了 Windows 更新服务;组策略/注册表是否指定了内网 WSUS
- 用本地 ISO 作为修复源(见下)
- 或临时把 DNS 改为
223.5.5.5/119.29.29.29
3. 错误 0x800f081f(找不到源文件)
需要用本地 ISO 指定修复源:
- 下载与当前系统版本和位数完全一致的官方 ISO,双击挂载(记住盘符,如 E:)
- 确认镜像版本:
DISM /Online /Get-CurrentEdition和winver - 执行:
DISM /Online /Cleanup-Image /RestoreHealth /Source:WIM:E:\sources\install.wim:1 /LimitAccess
其中:1是映像索引,可用DISM /Get-WimInfo /WimFile:E:\sources\install.wim查看 - 完成后重启,再跑
sfc /scannow
4. 错误 0x80070005(拒绝访问)
- 确认是以管理员身份运行
- 检查
C:\Windows\WinSxS和C:\Windows\Logs权限 - 尝试在安全模式下运行
5. 系统进不去桌面怎么办
在恢复环境(WinRE)命令行里离线修复:
sfc /scannow /offbootdir=C:\ /offwindir=C:\Windows DISM /Image:C:\ /Cleanup-Image /RestoreHealth
注意:恢复环境里盘符可能不同,先用 diskpart → list vol 或 dir C:\Windows 确认。
什么时候 DISM 也救不了
- 组件存储本身严重损坏,且没有匹配的 ISO
- 硬盘有坏道导致文件反复损坏(先查 SMART)
- 系统被深度精简/魔改过(Ghost 系统、精简版)
这类情况建议:备份数据 → 用官方镜像全新安装。微软官方镜像是最稳妥的,别用来路不明的 Ghost 系统。
日常维护建议
- 每 3~6 个月跑一次
sfc /scannow,早发现早处理 - 保持 Windows 更新开启(能自动修复部分组件问题)
- 不用第三方「系统修复大师」,它们多半就是封装了这两条命令
- 修复后创建系统还原点