標籤:windows xp microsoft 註冊表 安全 微軟
平時安裝Windows補丁時,經常會看到補丁中出現 GDR 或 QFE 等字樣,它們表示什麼意思呢?原來微軟已經為補丁中的更新系統檔案劃分了層級,其中 GDR 表示“普通分發版本”,而 QEF 則表示“重點補充工程更新版本”(Quick fix engineering)。其中,GDR檔案經過了大量嚴格的測試,穩定性很高。而對QFE所做的測試相對則要相對少一些,所以穩定性亦要低一些。
所以,微軟的補丁包也可以按此分為兩類。一類就是安全Hotfix,這類補丁包中同時包含了GDR和QFE版本的更新檔案,也就是兩個副本。微軟的很多關鍵性安全補丁就屬於此類。還有一類叫做修複程式,僅包含了QFE版的更新檔案。常見的就是一些需要正版驗證的補丁。
那麼為什麼安全Hotfix要包含兩種版本的檔案呢?如果你要在系統中安裝修復程式,也就是說要安裝QFE更新檔案。然而當前系統中需要被替換的檔案為GDR版,而且版本號碼要比補丁包中的QFE檔案版本號碼高,那麼就不能用補丁包中的QFE檔案來替換,而需要用與當前GDR檔案版本相同的QFE檔案來修補。那麼到哪裡取得這個檔案呢?其實這個QFE檔案在你以前安裝GDR版更新檔案(就是當前系統中使用的檔案)時就已經被同時複製到了你的硬碟中。這就是安全Hotfix需要同時包含GDR和QFE更新檔案,且兩類檔案版本號碼都相同的原因。
以名為WindowsXP-KB896688-x86-CHS.exe的安全Hotfix為例來說明,該補丁包需要更新MSHTML.DLL這個檔案。如果安裝程式檢測到系統中當前的MSHTML.DLL為GDR版時,則會用補丁包中GDR版的MSHTML.DLL(檔案說明為xpsp_sp2_gdr.051004-1415)來進行更新,並且把QFE版的MSHTML.DLL複製到"%windir%\$hf_mig$"這個檔案夾。反之,如果安裝程式檢測到系統中當前的MSHTML.DLL為QFE版時,則會用補丁包中QFE版的MSHTML.DLL(檔案說明為xpsp.051004-1419)來進行更新。兩個檔案的版本號碼都是6.00.2900.2769。
同時在註冊表中也可以發現這個特點。在我的系統中反映為兩個登錄機碼:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Updates\Windows XP\SP3\KB896688\Filelist\8和HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Updates\Windows XP\SP3\KB896688\Filelist\50。兩個項下的FileName字串值都是"MSHTML.DLL",而Location字串值分別為"C:\WINDOWS\system32"和"c:\windows\$hf_mig$\KB896688\SP2QFE",也就是分別存放GDR和QFE檔案的位置。
如果你在安裝了GDR版的KB896688補丁之後,又要重新安裝一個需要把MSHTML.DLL更新為QFE版的修複程式。但是該修複程式中的MSHTML.DLL版本號碼比6.00.2900.2769要低,那麼這時候更新程式就不會選取補丁包中的MSHTML.DLL來更新,而是到"%windir%\$hf_mig$"去找之前預留的QFE版MSHTML.DLL來更新。所以說一般最好不要輕易刪除Windows目錄下的"$hf_mig$"檔案夾。
轉自百度知道