当你的 Windows 10 出现随机错误、开机之后报错或组件无法正常工作等情况,很可能是一个或多个 Windows 文件丢失或损坏造成的。即便为了保证电脑能够正常运行,Windows 10 对自身做了很好的保护工作,但应用程序、驱动程序、甚至 Windows Update 都有可能造成系统不稳定。
如果你的 Windows 10 无法正常工作,或出现 DLL 等文件丢失的情况,可以使用 SFC 命令行工具来修复损坏或丢失的系统文件。
与早期版本 Windows 一样(Windows XP 开始),Windows 10 内包含了一个功能强大的命令行文件系统检查器(SFC),它可以扫描系统文件的完整性并用正常(原生)版本的文件替换掉已丢失或损坏的 Windows 系统文件。
在本文中我们将向大家介绍:如何在系统还可正常启动的情况下,一步步使用系统文件检查器(SFC)来修复已损坏的系统文件,以及当 Windows 10 无法正常启动时,如何使用 SFC 进行脱机手动修复。
由于修复过程会替换 Windows 10 的系统文件,为保万一,建议大家提前创建完整的系统映像备份或创建系统还原点。
扫描并修复Windows10系统文件
当 Windows 10 还可正常启动运行时,如下命令将对计算机上受保护的系统文件进行扫描并尽可能修复有问题的文件:
1
点击 Windows + X 快捷键 – 选择「命令提示符(管理员)」
2
在 CDM 窗口中执行如下命令:
sfc /scannow
3
一旦扫描完成后,如果没问题,命令行会有提示。如果有问题,会进行提示并输出日志路径。
查看SFC扫描结果详细信息
SFC 扫描结果会存储在 CBS.Log 日志文件当中,大家可用如下步骤进行查看:
1
点击 Windows + X 快捷键 – 选择「命令提示符(管理员)」
2
为保证不破坏原有日志文件,在 CDM 窗口中执行如下命令:
findstr /c:"[SR]" indirLogs\CBS\CBS.log > "C:\sfclogs.txt"
3
此时便可以在 C 盘根目录下找到转出来的 sfclogs.txt 日志文件。
如何脱机扫描并修复Windows 10
在 Windows 10 运行过程中,有很多受保护的系统文件会被加载到内存中,此时就无法直接进行修复替换,此时就需要进行 SFC 脱机修复。
1
与进入 Windows 10 安全模式的步骤类似,先在设置 – 更新和安全 – 恢复里面的高级启动中点击立即重启
2
系统重启之后点击疑难解答 – 高级选项 – 命令提示符
3
使用你的用户名和密码进行登录
4
在 Windows 环境外执行 SCF 修复时,必需要告诉它哪个是 Windows 安装盘和系统保留分区,在命令行中执行如下命令可以查看 Windows 系统分区的盘符:
wmic logicaldisk get deviceid, volumename, description
从上图中我们可以看到 C 盘成了保留分区、E 盘是光驱,所以 Windows 分区就是 D 盘了。
5
此时我们可以执行如下命令开始修复:
sfc /scannow /offbootdir=C:\ /offwindir=D:\Windows
/offboodir 参数用于指定系统保存分区,/offwindir 参数用于指定 Windows 系统所在分区。修复完成后进行系统重启即可,大家注意根据自己的实际情况来执行命令,不要直接照搬。
使用SFC手动修复Windows 10指定文件
默认情况下执行 SFC 命令会自动尝试对所有有问题的文件进行修复,当一个或多个文件无法自动修复时,通常都需要用户对其进行手动修复操作。与其说手动修复,其实就是在一台正常的 Windows 10 中把完好无损的文件拿过来替换掉已损坏的文件就 OK 了。
具体有哪些文件修复失败,可以在前面介绍过的 sfclogs.txt 日志文件中找到,下面我们只讲具体的操作方法。
1
点击 Windows + X 快捷键 – 选择「命令提示符(管理员)
2
在 CDM 窗口中执行如下命令:
takeown /f C:\要修复的文件路径
takeown 这个命令就是更改文件「所有者」的命令,这让我想起了 N 多年前讲师不断重复的 take ownership。
3
在拿到文件所有权后,还需要使用如下命令获取文件的完全控制权限:
icacls C:\要修复的文件路径 /Grant Administrators:F
4
然后再用一个完好无损的文件去替换掉损坏的文件即可,大家可以手动替换或用命令行:
copy C:\完好无损的文件 C:\要修复的文件路径
在文件替换完成后,你可以执行 SFC /verifyonly 来验证文件系统的完整性,查看问题是否已经得到修复。如果你只修复了个别文件,可以使用 sfc /VERIFYFILE=C:\文件路径 来进行查看,以避免长时间的完整扫描。