系統文件檢查器

系统文件检查器是Microsoft Windows中的一个实用工具，它允许用户扫描和恢复损坏的Windows系统文件。此实用工具在Windows 98、Windows 2000及Windows NT家族的所有后续版本中可用。在Windows Vista和Windows 7中，系统文件检查器已与Windows资源保护集成，它可以保护注册表键、文件夹以及关键的系统文件。

Windows 2000/XP/2003的Windows文件保护（WFP）根据在Winlogon中注册文件更改通知来工作。如果检测到任何对受保护系统文件的修改，修改的文件会被恢复为位于压缩文件夹 %WinDir%\System32\dllcache 的缓存副本。Windows Vista引入的Windows资源保护（WRP）取代了Windows檔案保護，WRP基于对预定义的受保护资源设置自主访问控制列表（DACL）和存取控制串列（ACL）工作。完全访问和修改WRP保护的资源被限制到使用Windows模块安装服务（TrustedInstaller.exe）的进程。管理員使用者不再拥有对系统文件的完全访问权。

 历史 
由于在Windows 95中Windows应用程序可以覆盖系统文件，微软在那之后实施了大量安全措施以保护系统文件免遭恶意攻击、损坏或DLL地獄等问题。

系统文件检查器在Windows 98中首次引入为一个图形界面实用工具。它可以扫描和修复损坏的系统文件，方式是检查文件的版本号与Windows 98干净安装的原始版本号是否匹配。这种文件保护的方法是很基本的。它根据文件扩展名和文件路径判定系统文件。它能够从安装媒体或用户指定的源路径恢复文件。Windows 98不提供超过文件属性的实时文件保护；因此，它没有提供阻止或抗打击能力。

从Windows 2000开始的所有基于Windows NT的操作系统都引入了实时文件保护，它被称为Windows文件保护（WFP）。

此外，系统文件检查器工具（sfc.exe）被重新实现为一个与WFP集成的更具健壮性的命令行实用工具。不同于Windows 98的SFC工具，新的实用工具着重于使用“Windows文件保护”扫描受保护的系统文件，并允许立即、静默从DLL缓存文件夹或安装媒体恢复系统文件。

SFC没有出现在Windows Me，它被系统文件保护（SFP）取代。类似WFP，SFP提供实时的保护。

 问题 
早于Service Pack 4的Windows 2000附带的“系统文件检查器”组件会覆盖微软发布的补丁；这在Windows 2000 Service Pack 4中被纠正。

 使用 
在基于Windows NT的操作系统中，系统文件检查器可以通过命令提示字元以如下命令调用：
sfc /scannow  (to repair problems)或sfc /verifyonly (no repair)如果它发现一个问题，它会尝试从DLL缓存（%WinDir%\System32\Dllcache\）替换有问题的文件。如果文件不在DLL缓存或者DLL缓存也已损坏，用户将被提示插入Windows安装媒体或提供网络安装路径。系统文件检查器会从注册表值 SourcePath 和 ServicePackSourcePath 检查Windows安装源路径。如果用户提供的安装媒体值不正确，它可能会再次提示要求输入。

从Windows Vista开始，文件受存取控制串列（ACL）保护，不过上面的命令并未改变。

在Windows Vista和之后Windows操作系统中的系统文件检查器可以扫描指定文件。另外，扫描可以对一个脱机Windows安装文件夹执行以替换损坏的文件，应对该Windows已无法启动的情况。当执行脱机扫描时，系统文件检查器必须从另一个Windows Vista或更新版本操作系统的工作目录运行，或者从可以访问Windows恢复环境的Windows安装DVD运行。

在组件存储已损坏情况下，“系统更新准备工具”（CheckSUR）可以在Windows 7、Windows Vista、Windows Server 2008 R2或Windows Server 2008上安装，这在Windows 10、Windows 8.1、Windows 8、Windows Server 2012 R2或Windows Server 2012中已被「部署映像服务和管理工具」（DISM）取代。此工具将检查违反自身有效载荷的情况并修复损坏。

 参考资料 

 外部链接 
 System File Checker (sfc)  
 Windows XP 和 Windows Server 2003 系统文件检查器 (Sfc.exe) 的说明  

Category:Windows管理
Category:Windows组件