萬盛學電腦網

 萬盛學電腦網 >> 健康知識 >> 深入Windows ME之系統文件保護

深入Windows ME之系統文件保護

   追求穩定是任何操作系統的目標,Windows Me自然也不例外。可惜Windows本身卻是一個系統文件的配置與安排顯得有些混亂的操作系統:系統文件與一般應用軟件的文件沒有適當的區分(不像Unix那樣,把用戶區和系統區分得很清楚),而且大部分的應用軟件必須搭配某些系統文件才能正常執行,因此某些應用軟件的安裝程序就不得不將搭配的系統文件一起安裝到用戶的電腦中,而系統不穩定的問題就產生了……   舉個例子來說。假如你目前的Windows使用了一個版本號為5.1的系統文件System.dll,它放在Windows系統目錄下的System目錄中。你現在安裝一個名為Winkiller的應用軟件(呵呵,舉例而已),但這個軟件卻要使用版本為3.0的System.dll系統文件,Winkiller的安裝程序會把舊版本的System.dll拷貝到Windows系統目錄下的System目錄中,更有甚者安裝程序根本就不理會新舊版本的系統文件而直接覆蓋(很多游戲和不負責的應用軟件都會這樣做)。   系統文件被覆蓋會有什麼後果呢?很難說,如果夠幸運,也許什麼問題也不會出現;但大多數情況是在一些特定的時候讓你的系統不穩定或干脆死機。這種情況用微軟工程師的術語來說就是DLL Hell——Windows系統是以Dynamic Link Library(動態鏈接庫)的方式讓系統和應用軟件共用所有的系統文件的,DLL Hell的意思就是因為系統文件被覆蓋而讓整個系統像是掉進了地獄一樣,萬劫不復。   OK,在你詛咒完微軟之後,我們還是來看看微軟在其新版的Windows Me中對這一情況的改進(或是補救)措施——System File Protection。   嚴格說來,System File Protection(系統文件保護,簡稱SFP)應該是System File Checker的加強版本。微軟曾經在Windows 98 SE版中加入了自動檢查系統文件狀況的功能——System File Checker,但實際上,System File Checker並沒有太大作用——如果真的有效,大概現在也就不會出現SFP了^_^。   SFP自Windows Me啟動之後就實時檢測系統文件,只要SFP發現系統文件將被覆蓋或刪除,它會“假裝”准許用戶或應用程序覆蓋或刪除系統文件,但實際上SFP會立即備份將被覆蓋或刪除的系統文件。只要用戶或應用程序完成覆蓋或刪除的過程,SFP就會馬上還原先前所備份下來的系統文件。   要達到上述的保護效果,SFP保存了兩份清單。一份記錄了所有被SFP保護的系統文件的名稱,這份清單存放在C:\WINDOWS\SYSTEM\sfp\sfpdb.sfp中(假設Windows Me的安裝目錄為C:\WINDOWS)。sfpdb.sfp是一個可讀的文本文件,你可以使用“記事本”等工具打開;在sfpdb.sfp中,一整行記錄就是一筆被保護的系統文件資料(見圖1)。   但是,只有sfpdb.sfp還是不夠的——如果只有文本文件格式的sfpdb.sfp,任何人都可以自行篡改sfpdb.sfp的內容,如此的保護就等於沒有保護了。因此微軟又以“安全目錄”的文件(後綴名為.cat)來存放這些被保護的數字簽名,目前這些被保護的系統文件的數字簽名都存放在C:\WINDOWS\SYSTEM\CatRoot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE}\SYSTEM.CAT中。你可以用鼠標雙擊SYSTEM.CAT文件,系統會彈出如圖2的“安全目錄”窗口,如果按下窗口右下角的“查看簽名”按鈕,就會出現如圖3的“數字簽名詳細信息”窗口。   我們可以自行測試SFP的保護功能:首先浏覽sfpdb.sfp的內容,,找一個被SFP保護的系統文件,然後到存放該文件的目錄去直接刪除或者以其它文件覆蓋。如果你還是對SFP功能有些不放心,那麼可以將受保護的系統文件移到其它地方。   來看看一個試驗的例子吧。我將C:\WINDOWS\SYSTEM\ MSRATING.DLL刪除,結果在短短幾秒之內,SFP便自動將它恢復了。整個過程中,你除了可以在“資源管理器”中直接觀察測試結果外,也可以通過SFP的系統記錄文件C:\WINDOWS\SYSTEM\sfp\sfplog.txt來查看SFP的運作過程(見圖4)。   SFP是否真的可以萬無一失地保護用戶不會掉進DLL Hell?這個問題其實應該從兩個方面來說:首先,光靠SFP是無法完全解決DLL Hell的,SFP只是被動地防止系統文件被刪除或覆蓋(如同Windows 2000用Wondows File Protection來提供類似的功能);程序開發人員只有注意運用系統文件時所帶來的問題,進而在開發軟件時避免覆蓋系統文件的操作,才能取得解決整個DLL Hell問題的雙重保障。另外,在一些情況下,某些受保護的系統文件是SFP無法還原的,所以大家還是不能高枕無憂……
copyright © 萬盛學電腦網 all rights reserved