結論
本文將告訴您「Windows 檔案保護」(WFP,Windows File Protection) 功能。
其他相關資訊
Windows 檔案保護 (WFP) 可以防止程式取代重要 Windows 系統檔案。程式絕對不可以覆寫這些檔案,因為作業系統和其他程式會使用這些檔案。因此如果能保護這些檔案,將可避免程式和作業系統發生問題。
WFP 會保護安裝 Windows 的重要系統檔案 (例如,具有 .dll、.exe、.ocx 和 .sys 副檔名的檔案和某些 True Type 字型)。WFP 會使用程式碼簽名所產生的檔案簽章和類別目錄檔案,來驗證受保護的系統檔案是否為正確的 Microsoft 版本。受保護之系統檔案的取代作業僅由下列機制所支援:-
使用 Update.exe 的 Windows Service Pack 安裝
-
使用 Hotfix.exe 或 Update.exe 所安裝的 Hotfix
-
使用 Winnt32.exe 的作業系統升級
-
Windows Update
如果程式使用不同的方法取代受保護的檔案,那麼 WFP 會還原原始的檔案。在安裝重要系統檔案時,Windows Installer 會遵守 WFP,並以安裝或取代受保護檔案的要求呼叫 WFP,而不是嘗試自行安裝或取代受保護的檔案。
WFP 功能的運作方式
WFP 功能會使用兩種機制來保護系統檔案。第一種機制是在背景中執行。在 WFP 收到受保護目錄中某個檔案的目錄變更通知之後,就會觸發這項保護。收到此通知後,WFP 會判斷變更了哪個檔案。如果此檔案是受保護的,WFP 會在類別目錄檔案中查詢檔案簽章,以判斷新檔案是否為正確版本。如果檔案並非正確版本,WFP 會將新檔案取代為快取資料夾中的檔案 (如果位於快取資料夾中) 或安裝來源中的檔案。WFP 會依此順序在下列位置中搜尋正確的檔案:
-
快取資料夾 (預設為 %systemroot%\system32\dllcache)。
-
網路安裝路徑 (如果系統以網路安裝)。
-
Windows CD-ROM (如果系統是從 CD-ROM 安裝)。
如果 WFP 在快取資料夾中找到檔案,或者自動找到安裝來源,那麼 WFP 就會在不做出任何通知的情況下取代檔案。如果 WFP 無法自動在這些位置中找到檔案,您就會看到下列其中一則訊息,其中 file_name 是被取代的檔案名稱,而 product 是您所使用的 Windows 產品:
-
Windows 檔案保護
正確執行 Windows 所需的檔案已被無法識別的版本所取代。Windows 必須還原這些檔案的原始版本,才能維持系統的穩定性。請立即插入 product CD-ROM。 -
Windows 檔案保護
正確執行 Windows 所需的檔案已被無法識別的版本所取代。Windows 必須還原這些檔案的原始版本,才能維持系統的穩定性。無法取得從中複製這些檔案的網路位置 \\server\share。請與系統管理員連絡或立即插入 product 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\Winlogon SfcScan 值的設定為:
-
0x0 = 重新啟動後不掃描受保護的檔案。(預設值)
-
0x1 = 每次重新啟動後掃描所有受保護的檔案 (執行 sfc /scanboot 時設定)。
-
0x2 = 重新啟動後掃描一次所有受保護的檔案 (執行 sfc /scanonce 時設定)。
依照預設,所有系統檔案都會快取在快取資料夾中,而快取記憶體的預設大小為 400 MB。基於磁碟空間的考量,您無法在快取資料夾中維護所有系統檔案的快取版本。如果要變更快取記憶體的大小,請變更下列登錄機碼中 SFCQuota 值的設定:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon WFP 會將已驗證的檔案版本儲存在硬碟的 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 無法找到安裝來源,就會提示系統管理員插入適當的媒體,以取代檔案或快取檔案的版本。 下列登錄機碼中的 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 知識庫」中的文件:
登錄 Windows 檔案保護的設定
如需 Windows XP 和 Windows Server 2003 中有關「系統檔案檢查程式」工具的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:Windows XP 與 Windows Server 2003 系統檔案檢查程式 (Sfc.exe) 說明
如需 Windows 2000 中有關「系統檔案檢查程式」工具的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:Windows 2000 系統檔案檢查程式 (Sfc.exe) 的說明
如需有關 WFP 功能的詳細資訊,請造訪下列 Microsoft 網站:
如需有關 Windows Installer 和 WFP 的詳細資訊,請造訪下列 Microsoft 網站: