文章詳情頁(yè)
深入探討WinXP系統(tǒng)文件保護(hù)功能
瀏覽:9日期:2023-07-18 11:43:16
當(dāng)你安裝一個(gè)應(yīng)用程序卻不料引起Windows崩潰的時(shí)候,很有可能是因?yàn)閼?yīng)用程序改寫(xiě)了關(guān)鍵的Windows系統(tǒng)文件,導(dǎo)致系統(tǒng)崩潰。在文件被修改后,結(jié)果往往不可預(yù)知。系統(tǒng)可能正常運(yùn)行,或者出一些錯(cuò)誤,或者完全崩潰。幸運(yùn)的是,Windows 2000, XP,和Server 2003應(yīng)用了一個(gè)稱(chēng)作Windows文件保護(hù)(Windows File Protection, WFP)機(jī)制,它可以防止關(guān)鍵的系統(tǒng)文件被改寫(xiě)。在這篇文章中,我將解釋何謂WFP和它是如何工作的。我還要告訴你如何修改或忽略WFP的行為。(注釋:盡管在Windows 2000, XP,和Server 2003上,WFP的運(yùn)行沒(méi)什么區(qū)別,但這篇文章中的信息,包括注冊(cè)表相關(guān)條目和SFC語(yǔ)法,是針對(duì)XP的。) Windows文件保護(hù)是如何工作的 WFP被設(shè)計(jì)用來(lái)保護(hù)Windows文件夾的內(nèi)容。WFP保護(hù)特定的文件類(lèi)型,比如SYS、EXE、DLL、OCX、FON和TTF,而不是阻止對(duì)整個(gè)文件夾的任何修改。注冊(cè)表鍵值決定WFP保護(hù)的文件類(lèi)型。 當(dāng)一個(gè)應(yīng)用程序試圖替換一個(gè)受保護(hù)的文件,WFP檢查替換文件的數(shù)字簽名,以確定此文件是否是來(lái)自微軟和是否是正確的版本。如果這兩個(gè)條件都符合,則允許替換。正常情況下,允許替換系統(tǒng)文件的文件種類(lèi)包括Windows的服務(wù)包,補(bǔ)丁和操作系統(tǒng)升級(jí)程序。系統(tǒng)文件還可以由Windows更新程序或Windows設(shè)備管理器/類(lèi)安裝程序替換。 如果這兩個(gè)條件沒(méi)有同時(shí)滿(mǎn)足,受保護(hù)文件將被新文件替換,但將很快被正確的文件替換回來(lái)。當(dāng)這種情況發(fā)生時(shí),Windows會(huì)從Windows安裝CD或者計(jì)算機(jī)的DLLCache文件夾中復(fù)制正確版本的文件。 Windows文件保護(hù)并不僅僅通過(guò)拒絕修改來(lái)保護(hù)文件,它還可以拒絕刪除。來(lái)看看WFP的做法,打開(kāi)WINDOWSSYSTEM32文件夾并將CALC.EXE文件重命名為CALC.OLD。當(dāng)你這樣做時(shí),一個(gè)消息將提示你如果改變這個(gè)文件的擴(kuò)展名可能會(huì)導(dǎo)致這個(gè)文件不可用。點(diǎn)擊Yes按鈕確認(rèn)這個(gè)警告。現(xiàn)在,等幾分鐘后按F5鍵以刷新文件系統(tǒng)的視圖,完成替換可能要花些時(shí)間。當(dāng)文件最終被替換后,Windows會(huì)在事件日志中做相應(yīng)的記錄。 關(guān)于WFP值得關(guān)注的一點(diǎn)是它和Windows安裝程序結(jié)合的很緊密。無(wú)論何時(shí),如果Windows安裝程序需要安裝一個(gè)受保護(hù)的文件,它就把這個(gè)文件交給WFP,而不是自己試圖去安裝這個(gè)文件。然后由WFP判斷是否允許安裝。 系統(tǒng)文件檢查 雖然自動(dòng)文件替換會(huì)節(jié)省時(shí)間,但也存在需要手動(dòng)干預(yù)的情況。例如,你可能不愿意空等著WFP去判斷受保護(hù)的文件是否已經(jīng)被替換。幸運(yùn)的是,你可以用一個(gè)名為系統(tǒng)文件檢查(SFC)的工具手動(dòng)控制WFP。 SFC是一個(gè)命令行工具,需要在命令提示符窗口下運(yùn)行。它的語(yǔ)法像這樣: SFC [/SCANNOW] [/SCANONCE] [/SCANBOOT] [/REVERT] [/PURGECACHE] [/CACHESIZE=x] /SCANNOW選項(xiàng)通知SFC立即掃描所有受保護(hù)的系統(tǒng)文件。如果在掃描過(guò)程中發(fā)現(xiàn)一個(gè)錯(cuò)誤的文件版本,這個(gè)錯(cuò)誤的版本將被替換為微軟正確的版本。當(dāng)然,這意味著你可能必須有Windows安裝CD,最新的服務(wù)包或者升級(jí)補(bǔ)丁。 /SCANONCE參數(shù)通知WFP在系統(tǒng)下次啟動(dòng)的時(shí)候掃描受保護(hù)的系統(tǒng)文件。在掃描過(guò)程中,任何錯(cuò)誤的文件將被正確的版本替換。正如這個(gè)參數(shù)名的意思,這個(gè)掃描只進(jìn)行一次。之后的系統(tǒng)啟動(dòng)將恢復(fù)正常,SFC不再運(yùn)行。 /SCANBOOT參數(shù)和/SCANONCE選項(xiàng)類(lèi)似。區(qū)別在于SCANONCE只在Windows下次啟動(dòng)時(shí)掃描受保護(hù)的文件,而SCANBOOT參數(shù)則在Windows每次啟動(dòng)時(shí)都掃描系統(tǒng)文件。如果需要,這兩個(gè)參數(shù)將替換錯(cuò)誤的系統(tǒng)文件,這可能需要你提供正確文件版本的拷貝。 /REVERT選項(xiàng)用來(lái)關(guān)閉SFC,例如,假設(shè)你使用SCANBOOT選項(xiàng)在每次系統(tǒng)啟動(dòng)的時(shí)候掃描所以保護(hù)的文件。正如你所能想到的,這確實(shí)會(huì)增加計(jì)算機(jī)啟動(dòng)的總時(shí)間。最后,你可能厭倦了漫長(zhǎng)的啟動(dòng)時(shí)間,想關(guān)閉SFC。只需要簡(jiǎn)單的使用SFC /REVERT,就可以在啟動(dòng)的時(shí)候關(guān)閉SFC。 對(duì)/PURGECACHE選項(xiàng)就需要謹(jǐn)慎些。在這之前,我解釋說(shuō)Windows使用一個(gè)緩存文件夾來(lái)保存各類(lèi)系統(tǒng)文件正確版本的備份。如果你運(yùn)行SFC /PURGECACHE命令,那么這個(gè)文件緩存將被清空,那些備份文件將被刪除。這個(gè)命令還會(huì)導(dǎo)致Windows開(kāi)始掃描各類(lèi)受保護(hù)文件,并在掃描的同時(shí)重建這個(gè)文件緩存。當(dāng)然,這可能意味著你必須向Windows提供Windows安裝CD或系統(tǒng)文件升級(jí)的拷貝。 最后一個(gè)SFC命令選項(xiàng)是/CACHESIZE=x。對(duì)于文件緩存的缺省大小確實(shí)存在很多自相矛盾的信息,在寫(xiě)這篇文章的時(shí)候,我發(fā)現(xiàn)三篇不同的微軟知識(shí)庫(kù)文章中指定的文件緩存的缺省大小都不一樣。一篇文章中建議文件緩存的大小為50 MB,而另一篇建議的大小卻是300 MB。更有甚者,第三篇指出這個(gè)大小應(yīng)該是無(wú)限的。其實(shí)缺省值的大小并不重要,因?yàn)槟憧梢愿鶕?jù)你的需要,使用CACHESIZE選項(xiàng)來(lái)改變這個(gè)文件緩存的大小。 在使用CACHESIZE選項(xiàng)時(shí),你必須鍵入命令SFC /CACHESIZE=x,這個(gè)x是指你想分配給文件緩存的兆字節(jié)數(shù)。在指定了新的文件緩存大小后,你必須重啟系統(tǒng)并運(yùn)行SFC /PURGECACHE命令。 通過(guò)注冊(cè)表控制WFP和SFC 在這之前,我解釋說(shuō)注冊(cè)表控制WFP的一般行為。你可以修改幾個(gè)不同的注冊(cè)表鍵值以控制WFP的行為。你可以在每次運(yùn)行SFC直接操作這些鍵的一部分,其他一些有更低級(jí)別的功能。比如指定文件緩存或者安裝文件的位置。 修改注冊(cè)表可能是危險(xiǎn)的。如果你做了一個(gè)錯(cuò)誤的修改,可能會(huì)導(dǎo)致Windows的崩潰或者破壞你的應(yīng)用程序,所以我強(qiáng)烈建議在嘗試這一節(jié)中描述的任何技術(shù)之前,先對(duì)注冊(cè)表做一個(gè)完整的備份。 為了訪問(wèn)SFC的注冊(cè)表鍵,在Run命令中鍵入REFEDIT命令。這將打開(kāi)注冊(cè)表編輯器,現(xiàn)在瀏覽注冊(cè)表樹(shù)找到下面這個(gè)鍵: HKEY_LOCAL_MacHINESOFTWAREMicrosoftWindows NTCurrentVersionWinLogon 通常地,注冊(cè)表中WinLogon鍵一般用來(lái)控制各種不同的啟動(dòng)選項(xiàng)。雖然許多SFC的選項(xiàng)都可控制SFC是否在啟動(dòng)的的時(shí)候運(yùn)行,但微軟已經(jīng)將SFC相關(guān)的注冊(cè)表鍵放在這個(gè)部分。
標(biāo)簽:
Windows系統(tǒng)
WinXP
排行榜
