System File Protection (SFP) 是 Windows Vista 及其后续版本引入的一个机制,用于保护操作系统的关键系统文件,防止这些文件被未经授权的修改、删除或替换。其底层原理主要通过以下几个方面来实现:
System File Protection (SFP) 是Windows操作系统中的一项技术,旨在保护系统文件不被恶意软件或意外操作破坏。SFP在Windows中经历了多个版本的演变,以下是SFP技术在Windows中的发展时间线:
1. Windows 95:SFP的早期阶段
- Windows 95 引入了基本的文件保护机制,尤其是在操作系统的核心文件上。尽管这个版本没有正式命名为“System File Protection”,但它为后来的SFP奠定了基础。Windows 95允许操作系统和应用程序的核心文件被修改,但会提醒用户操作系统可能受到影响。
2. Windows 98:简化的系统文件保护
- Windows 98 改进了文件保护机制。虽然它没有完整的“System File Protection”,但通过**Windows File Protection (WFP)**的形式提供了类似的功能。WFP在某些核心系统文件被篡改或删除时进行警告,用户可以选择恢复这些文件。这样减少了第三方程序和恶意软件对系统文件的破坏。
3. Windows Me (Windows Millennium Edition):正式引入WFP
- Windows Me(2000年发布) 中,微软正式引入了Windows File Protection (WFP)。该功能进一步增强了操作系统文件的保护,确保操作系统的核心文件不被非法修改、删除或替换。Windows Me在系统启动时检查保护文件,并在发现问题时恢复这些文件。
4. Windows XP:增强的WFP
- Windows XP(2001年发布) 是Windows操作系统中引入WFP的一个重要版本。WFP在Windows XP中得到了全面强化,支持更多的系统文件保护和自动恢复机制。操作系统文件通过特殊的存储机制(称为系统文件缓存)进行备份,并在文件遭到破坏时自动恢复。该功能减少了操作系统因为文件丢失或篡改而出现的错误。
5. Windows Vista:引入更高层次的保护机制
- Windows Vista(2007年发布) 引入了更加复杂的保护机制,进一步增强了WFP。除了增强的系统文件保护外,Windows Vista还引入了用户帐户控制(UAC)和基于角色的访问控制(RBAC)机制,使得对系统文件的修改更加严格。通过WFP,Windows Vista确保了只有经过授权的进程才可以修改关键系统文件。
6. Windows 7:WFP的改进与稳定性提升
- Windows 7(2009年发布) 在Windows Vista的基础上进行了多项改进,WFP被更加稳定和高效地集成进了操作系统。Windows 7增强了对文件保护的支持,并对系统恢复和保护的过程进行了优化,减少了用户干预的需求。该版本的WFP使得在文件受损时,系统能够自动恢复,保障操作系统的完整性和稳定性。
7. Windows 8 / Windows 8.1:WFP与现代化架构的整合
- Windows 8 / Windows 8.1(2012年和2013年发布) 继续改进了WFP的功能,结合现代化的操作系统架构,使文件保护机制更为智能和高效。尽管文件保护的机制有所升级,但在用户界面和管理方式上做了优化,减少了用户对手动恢复文件的需求。Windows 8 还进一步提高了对操作系统和用户文件的保护,以应对现代硬件和软件环境的复杂性。
8. Windows 10:更全面的文件保护与恢复机制
- Windows 10(2015年发布) 继续完善了WFP,并将其与Windows Update和系统恢复等功能紧密集成。Windows 10引入了文件版本控制和文件保护技术(例如,System File Checker (sfc) 和 DISM 工具)来修复损坏的系统文件。此外,Windows 10通过更加智能的更新和恢复机制(如Windows Defender)确保用户的系统文件得到及时更新和保护。
9. Windows 11:持续优化的文件保护
- Windows 11(2021年发布) 在Windows 10的基础上进一步优化了文件保护功能,增加了更多的系统完整性检查和保护技术。通过对Windows系统的定期扫描和修复机制,Windows 11能够有效地防止恶意软件和不当操作对系统文件的破坏。与Windows Defender协同工作,Windows 11提供了更强的系统安全性和文件完整性保护。
- Windows 95:早期的文件保护机制开始探索。
- Windows 98:简化版的文件保护,类似WFP。
- Windows Me:正式引入Windows File Protection。
- Windows XP:WFP增强,自动恢复系统文件。
- Windows Vista:引入更多的安全机制,如UAC,同时增强WFP。
- Windows 7:进一步优化WFP,自动恢复系统文件。
- Windows 8 / 8.1:现代化架构与WFP的结合,文件保护智能化。
- Windows 10:WFP和其他安全功能整合,自动修复损坏文件。
- Windows 11:继续优化文件保护与恢复机制,增强系统安全性。
System File Protection (SFP) 及其演变体现了微软对操作系统安全性的重视,从最初的基础保护到如今的全面和智能保护,为用户提供了更高的系统稳定性与安全性。
如果在您的系统中没有找到 C:\Windows\System32\dllcache 目录,可能是因为自 Windows Vista 以来,Windows 文件保护(SFP)机制和其他文件管理功能已经发生了一些变化。
在较新的 Windows 版本(如 Windows 7、8、10 和 11)中,dllcache 文件夹已被替代或合并到其他机制中。Windows 系统文件保护(SFP)机制与以下内容相关,确保系统的稳定性和安全性:
-
C:\Windows\WinSxS- 用途:从 Windows Vista 开始,
WinSxS目录已成为存储所有 Windows 组件和库文件的地方。它保存了多个版本的 DLL 文件和其他系统组件,以便能够在文件被修改或丢失时恢复。WinSxS不仅用于系统文件保护,还用于支持 Windows 更新、操作系统恢复和其他模块化功能。
- 用途:从 Windows Vista 开始,
-
C:\Windows\System32\catroot2- 用途:与
catroot类似,catroot2目录用于存储与 Windows 安装和更新相关的数字证书、文件签名信息和其他缓存文件。它确保系统文件和组件的完整性,避免未经授权的更改。
- 用途:与
-
C:\Windows\System32\config- 用途:存储系统注册表的文件,包括受保护的注册表配置文件(例如:
SAM、SECURITY、SOFTWARE等)。这些文件受到文件保护机制的保护,以确保操作系统配置的完整性和安全性。
- 用途:存储系统注册表的文件,包括受保护的注册表配置文件(例如:
-
C:\Windows\System32\wbem- 用途:用于 Windows 管理工具(WMI)相关的文件和数据。WMI 是 Windows 系统管理的关键部分,确保系统和应用程序的管理、监控和配置不会受到篡改。
-
C:\Windows\System32\restore- 用途:该目录与系统还原功能密切相关。它包含系统还原所需的文件和数据,允许用户在系统崩溃或出现严重问题时恢复到之前的状态。
补充说明:
-
System File Checker (SFC):在没有dllcache目录的情况下,SFC 工具仍然是验证和修复系统文件的关键工具。通过运行sfc /scannow命令,Windows 可以扫描系统文件并修复损坏的文件。如果某些文件被删除或损坏,SFC 会从 Windows 更新或WinSxS中提取备份文件来恢复。 -
Windows 更新 (Windows Update):Windows 更新会自动下载并安装缺失或损坏的系统文件,通过操作系统的在线资源来保证文件的完整性。 -
Windows 组件存储 (Component Store):WinSxS目录中的组件存储(Component Store)是 Windows 维护所有操作系统组件和更新版本的地方。它确保了即使在没有dllcache的情况下,Windows 也能从此存储中恢复和修复丢失或损坏的系统文件。
在现代的 Windows 系统中,文件保护机制已经不再依赖单一的 dllcache 目录,而是通过上述多个机制和目录共同维护操作系统的稳定性和文件完整性。
在 System File Protection (SFP) 机制之后,Windows 操作系统引入了 Windows 文件保护 (Windows File Protection, WFP) 和 Windows 资源保护 (Windows Resource Protection, WRP) 等其他保护机制。这些机制是基于 SFP 的改进和扩展,旨在进一步保护系统文件和系统资源的安全性。
-
Windows 文件保护 (WFP)
- 引入时间:WFP 是在 Windows 2000 和 Windows XP 中引入的,继承了 SFP 的基本功能,但更加专注于保护关键的系统文件(例如
.dll、.exe、.sys等)。 - 功能:WFP 通过监控文件的修改和更新来确保系统文件不被恶意软件、病毒或不当的用户操作所篡改。它会在系统文件被替换或删除时进行阻止,类似于 SFP,但 WFP 在 Windows XP 中的实现更为完善,并扩展了对特定目录和文件的保护。
- 引入时间:WFP 是在 Windows 2000 和 Windows XP 中引入的,继承了 SFP 的基本功能,但更加专注于保护关键的系统文件(例如
-
Windows 资源保护 (WRP)
- 引入时间:WRP 是在 Windows Vista 及其后续版本中引入的,作为 SFP 和 WFP 的继任者。它不仅包括了对系统文件的保护,还扩展到了保护注册表、驱动程序以及其他关键资源。
- 功能:WRP 提供了更强的保护,确保操作系统的核心文件、目录和注册表项不会被未经授权的修改或删除。它整合了 SFP 和 WFP 的功能,并加入了更多的保护层,以防止用户或应用程序对操作系统的重要文件和资源进行不当的更改。
- SFP 主要是在 Windows Vista 之前的版本中用于保护系统文件,确保关键文件的完整性。
- WFP 在 Windows 2000 和 Windows XP 中引入,用于更全面的保护关键系统文件。
- WRP 在 Windows Vista 及后续版本中引入,不仅保护文件,还扩展到其他系统资源,如注册表、驱动程序等,提供更为全面的系统保护。
System File Protection (SFP) 是 Windows Vista 及其后续版本引入的一个机制,用于保护操作系统的关键系统文件,防止这些文件被未经授权的修改、删除或替换。其底层原理主要通过以下几个方面来实现:
1. 核心机制
- 保护系统文件:SFP 机制会监控 Windows 操作系统中所有重要的系统文件(如
.dll、.sys和.exe文件)。这些文件对操作系统的正常运行至关重要,因此必须防止被篡改或替换。 - 数字签名:Windows 使用数字签名来验证这些受保护的文件。在 Windows 系统中,所有受保护的系统文件都会有一个数字签名,确保文件的来源和完整性。
- 文件备份:系统在安装时会创建一个本地副本的文件(在
C:\Windows\System32\catroot等目录中),这些副本作为系统文件的“备份”使用,以便恢复受损或被替换的文件。
2. 操作过程
- 文件保护:当系统启动时,SFP 会扫描和记录系统文件的版本信息。这些信息会存储在操作系统中,通常是通过使用“数字签名”和“哈希值”来识别文件的正确版本。
- 监控与验证:当系统文件在使用过程中被修改时,SFP 会检测到修改。如果用户或应用程序试图替换或修改这些文件,SFP 会进行验证并防止更改。系统文件会与备份的副本进行比较,并根据需要修复它们。
- 自动恢复:如果 SFP 检测到一个受保护的文件被篡改,系统会尝试自动恢复该文件。默认情况下,系统会从以下来源恢复文件:
- 本地缓存:如果该文件有备份,SFP 会从备份中恢复文件。
- 安装源:如果文件在本地没有备份,SFP 会要求用户提供安装介质(如安装光盘、Windows 更新包或其他合法来源)来恢复文件。
3. 与 DLL 缓存的区别
- 在 Windows XP 之前,
dllcache文件夹用于存储系统文件的备份。Windows XP 及之前版本使用的是文件版本保护(File Protection),这与 SFP 在 Windows Vista 之后的实现有所不同。 - 在 SFP 机制下,系统文件的备份和恢复不仅仅局限于 DLL 文件,还包括了其他系统关键文件(如
.sys文件和驱动程序等)。
4. SFP 机制的工作流程
- 启动时检查文件完整性:每次系统启动时,SFP 会验证保护的系统文件的完整性。它会对这些文件进行哈希校验,确保文件没有被篡改。
- 监控文件修改:当应用程序或用户尝试修改或替换一个受保护的系统文件时,SFP 会阻止这种修改。如果用户尝试替换文件,系统会弹出警告,告知文件已被修改或无效。
- 文件修复:如果文件被修改,SFP 会从本地备份或安装源中恢复文件。如果没有备份,SFP 会引导用户提供一个有效的安装源(如光盘或网络位置)来修复文件。
5. SFP 和 Windows 更新
- SFP 机制也与 Windows 更新紧密集成。当系统文件被更新时,SFP 会确保新的文件替换不会损坏系统的稳定性。如果有任何更新操作失败,SFP 会恢复到系统文件的先前版本。
6. 控制与配置
- 组策略和注册表设置:在企业或高阶用户的环境中,SFP 的行为可以通过组策略或注册表进行配置。例如,可以禁用 SFP 或配置文件保护行为,以满足不同的需求。
- 命令行工具:管理员可以通过
sfc /scannow等命令行工具触发文件保护的扫描与修复功能,以手动触发文件修复过程。
7. 缺点与限制
- 性能开销:虽然 SFP 提供了重要的文件保护功能,但它在系统启动和文件操作时会产生一定的性能开销。每次文件修改都需要进行验证和备份文件恢复操作。
- 可能误报:在某些情况下,SFP 可能会误报某些合法的文件修改(例如,某些更新程序或软件安装过程),导致操作受限。
SFP 是 Windows 系统的一种防护机制,通过数字签名和文件哈希值保护系统文件的完整性。它会防止文件被恶意篡改或丢失,并且在需要时能够自动恢复文件。该机制大大提高了操作系统的安全性,确保了操作系统在面对恶意软件、文件损坏或误操作时能够快速恢复。
Windows 文件保护功能说明
总结
本文介绍 Windows 文件保护 (WFP) 功能。
更多信息
Windows 文件保护 (WFP) 可防止程序替换关键的 Windows 系统文件。程序不得覆盖这些文件,因为它们作系统和其他程序使用。保护这些文件可以防止程序和作系统出现问题。WFP 保护作为 Windows 的一部分安装的关键系统文件(例如,具有 .dll、.exe、.ocx 和 .sys 扩展名以及某些 True Type 字体的文件)。WFP 使用代码签名生成的文件签名和目录文件来验证受保护的系统文件是否是正确的 Microsoft 版本。仅通过以下机制支持替换受保护的系统文件:
-
使用 Update.exe 安装 Windows Service Pack
-
使用 Hotfix.exe 或 Update.exe 安装的修补程序
-
使用 Winnt32.exe 进行作系统升级
-
Windows 更新
如果程序使用其他方法替换受保护的文件,WFP 将还原原始文件。Windows Installer 在安装关键系统文件时遵循 WFP,并调用 WFP 以请求安装或替换受保护的文件,而不是尝试安装或替换受保护的文件本身。
WFP 功能的工作原理
WFP 功能使用两种机制为系统文件提供保护。第一种机制在后台运行。此保护是在 WFP 收到受保护目录中文件的目录更改通知后触发的。WFP 收到此通知后,WFP 会确定已更改的文件。如果文件受保护,WFP 将在目录文件中查找文件签名,以确定新文件是否为正确版本。如果文件版本不正确,WFP 会将新文件替换为缓存文件夹(如果位于缓存文件夹中)或安装源中的文件。WFP 按以下顺序在以下位置搜索正确的文件:
-
缓存文件夹(默认为 %systemroot%\system32\dllcache)。
-
网络安装路径(如果系统是使用 network install 安装的)。
-
Windows CD-ROM(如果系统是从 CD-ROM 安装的)。
如果 WFP 在缓存文件夹中找到该文件,或者自动找到安装源,WFP 会以无提示方式替换该文件,并在系统日志中记录类似于以下内容的事件:
事件 ID:64001来源:Windows 文件保护说明:尝试对受保护的系统文件 c:\winnt\system32\ file_name 进行文件替换。此文件已恢复到原始版本,以保持系统稳定性。系统文件的文件版本为 x.x:x.x。
如果 WFP 无法在这些位置中的任何一个位置自动找到该文件,您将收到以下消息之一,其中 file_name 是已替换的文件的名称,product 是您正在使用的 Windows 产品:
-
Windows 文件保护Windows 正常运行所需的文件已被无法识别的版本替换。为了保持系统稳定性,Windows 必须还原这些文件的原始版本。立即插入您的产品CD-ROM。
-
Windows 文件保护Windows 正常运行所需的文件已被无法识别的版本替换。为了保持系统稳定性,Windows 必须还原这些文件的原始版本。应从中复制这些文件的网络位置 \\server\share 不可用。请与系统管理员联系或立即插入产品 CD-ROM。
注意 如果管理员未登录,WFP 将无法显示这些对话框中的任何一个。在这种情况下,WFP 会在管理员登录后显示对话框。在以下情况下,WFP 可能会等待管理员登录:
-
SFCShowProgress 注册表项缺失或设置为 1,并且服务器设置为每次启动计算机时进行扫描。在这种情况下,WFP 等待控制台登录。因此,RPC 服务器在执行扫描之前不会启动。在此期间,计算机没有保护。注意 您仍然可以映射网络驱动器、使用系统文件以及使用终端服务登录到服务器。WFP 不会将这些作视为控制台登录,而是无限期等待。
-
WFP 必须从网络共享还原文件。如果文件不存在于 Dllcache 文件夹中或文件已损坏,则可能会出现这种情况。在这种情况下,WFP 可能没有正确的凭据来从基于网络的安装媒体访问共享。
WFP 功能提供的第二种保护机制是系统文件检查器 (Sfc.exe) 工具。在 GUI 模式安装程序结束时,系统文件检查器工具会扫描所有受保护的文件,以确保它们不会被使用无人值守安装安装的程序修改。系统文件检查器工具还会检查用于跟踪正确文件版本的所有目录文件。如果任何目录文件丢失或损坏,WFP 将重命名受影响的目录文件,并从缓存文件夹中检索该文件的缓存版本。如果缓存文件夹中没有目录文件的缓存副本,则 WFP 功能会请求相应的媒体来检索目录文件的新副本。系统文件检查器工具使管理员能够扫描所有受保护的文件以验证其版本。系统文件检查器工具还会检查并重新填充缓存文件夹(默认情况下为 %SystemRoot%\System32\Dllcache)。如果高速缓存文件夹已损坏或不可用,您可以在命令提示符下使用 sfc /scanonce 命令或 sfc /scanboot 命令来修复文件夹的内容。以下注册表项中的 SfcScan 值具有三种可能的设置:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WinlogonSfcScan 值的设置为:
-
0x0 = 重新启动后不扫描受保护的文件。(默认值)
-
0x1 = 每次重启后扫描所有受保护的文件(如果运行 sfc /scanboot 则设置)。
-
0x2 = 在重新启动后扫描所有受保护的文件一次(如果运行 sfc /scanonce,则设置)。
默认情况下,所有系统文件都缓存在 cache 文件夹中,缓存的默认大小为 400 MB。出于磁盘空间的考虑,在 cache 文件夹中维护所有系统文件的缓存版本可能并不可取。要更改缓存的大小,请更改以下注册表项中 SFCQuota 值的设置:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\WinlogonWFP 将已验证的文件版本存储在硬盘上的 Dllcache 文件夹中。缓存文件的数量由 SFCQuota 值的设置决定(默认大小为 0xFFFFFFFF 或 400 MB)。管理员可以根据需要将 SFCQuota 值的设置设置为大或小。请注意,如果将 SFCQuota 值设置为 0xFFFFFFFF,WFP 功能将缓存所有受保护的系统文件(大约 2,700 个文件)。在两种情况下,无论 SFCQuota 值如何,缓存文件夹都不能包含所有受保护文件的副本:
-
磁盘空间不足。在 Windows XP 下,当硬盘上的可用空间少于 (600 MB + 页面文件的最大大小) 时,WFP 将停止填充 Dllcache 文件夹。在 Windows 2000 下,当硬盘上的可用空间少于 600 MB 时,WFP 将停止填充 Dllcache 文件夹。
-
网络安装。当通过网络安装 Windows 2000 或 Windows XP 时,i386\lang 目录中的文件不会填充到 Dllcache 文件夹中。
此外,Driver.cab 文件中的所有驱动程序都受到保护,但它们不会填充到 Dllcache 文件夹中。WFP 可以直接从 Driver.cab 文件还原这些文件,而无需提示用户输入源媒体。但是,运行 sfc /scannow 命令会将 Driver.cab 文件中的文件填充到 Dllcache 文件夹中。如果 WFP 检测到文件更改,并且受影响的文件不在缓存文件夹中,则 WFP 会检查作系统当前使用的已更改文件的版本。如果当前正在使用的文件是正确的版本,则 WFP 会将该文件的该版本复制到缓存文件夹。如果当前正在使用的文件不是正确的版本,或者文件未缓存在缓存文件夹中,WFP 将尝试查找安装源。如果 WFP 找不到安装源,WFP 会提示管理员插入适当的媒体来替换文件或缓存的文件版本。以下注册表项中的 SFCDllCacheDir 值 (REG_EXPAND_SZ) 指定 Dllcache 文件夹的位置。
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\WinlogonSFCDllCacheDir 值的默认值数据为 %SystemRoot%\System32。SFCDllCacheDir 值可以是本地路径。默认情况下,SFCDllCacheDir 值未在 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon 注册表项中列出。要修改缓存位置,必须添加此值。当 Windows 启动时,WFP 会从以下注册表项同步(复制)WFP 设置
HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows NT\Windows File Protection添加到以下注册表项:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon因此,如果 SfcScan、SFCQuota 或 SFCDllCacheDir 值存在于 HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows NT\Windows File Protection 子项中,则这些值优先于 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon 子项中的相同值。
有关 WFP 功能的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
222473 Windows 文件保护的注册表设置 有关 Windows XP 和 Windows Server 2003 中的系统文件检查器工具的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
310747 Windows XP 和 Windows Server 2003 系统文件检查器说明 (Sfc.exe)有关 Windows 2000 中的系统文件检查器工具的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
222471 Windows 2000 系统文件检查器的说明 (Sfc.exe)
有关 WFP 功能的详细信息,请访问下面的 Microsoft 网站:
http://msdn2.microsoft.com/en-us/library/aa382551.aspx有关 Windows Installer 和 WFP 的详细信息,请访问下面的 Microsoft 网站:
http://msdn2.microsoft.com/en-us/library/aa372820.aspx

浙公网安备 33010602011771号