深入剖析Windows补丁
基本上來(lái)說(shuō),現(xiàn)在微軟Windows補(bǔ)丁包中的更新文件大致包含了兩類。一類叫做GDR(普通分發(fā)版本),一類叫做QFE(快速修補(bǔ)工程更新)。其中,GDR文件經(jīng)過(guò)了大量嚴(yán)格的測(cè)試,穩(wěn)定性很高。而對(duì)QFE所做的測(cè)試相對(duì)則要相對(duì)少一些,所以穩(wěn)定性亦要低一些。
所以,微軟的補(bǔ)丁包也可以按此分為兩類。一類就是安全修補(bǔ)程序,這類補(bǔ)丁包中同時(shí)包含了GDR和QFE版本的更新文件,也就是兩個(gè)副本。微軟的很多關(guān)鍵性安全補(bǔ)丁就屬于此類。還有一類叫做修復(fù)程序,僅包含了QFE版的更新文件。常見(jiàn)的就是一些需要正版驗(yàn)證的補(bǔ)丁。
那么為什么安全修補(bǔ)程序要包含兩種版本的文件呢?如果你要在系統(tǒng)中安裝修復(fù)程序,也就是說(shuō)要安裝QFE更新文件。然而當(dāng)前系統(tǒng)中需要被替換的文件為GDR版,而且版本號(hào)要比補(bǔ)丁包中的QFE文件版本號(hào)高,那么就不能用補(bǔ)丁包中的QFE文件來(lái)替換,而需要用與當(dāng)前GDR文件版本相同的QFE文件來(lái)修補(bǔ)。那么到哪里取得這個(gè)文件呢?其實(shí)這個(gè)QFE文件在你以前安裝GDR版更新文件(就是當(dāng)前系統(tǒng)中使用的文件)時(shí)就已經(jīng)被同時(shí)復(fù)制到了你的硬盤(pán)中。這就是安全修補(bǔ)程序需要同時(shí)包含GDR和QFE更新文件,且兩類文件版本號(hào)都相同的原因。
以名為WindowsXP-KB896688-x86-CHS.exe的安全修補(bǔ)程序?yàn)槔齺?lái)說(shuō)明,該補(bǔ)丁包需要更新MSHTML.DLL這個(gè)文件。如果安裝程序檢測(cè)到系統(tǒng)中當(dāng)前的MSHTML.DLL為GDR版時(shí),則會(huì)用補(bǔ)丁包中GDR版的MSHTML.DLL(文件說(shuō)明為xpsp_sp2_gdr.051004-1415)來(lái)進(jìn)行更新,并且把QFE版的MSHTML.DLL復(fù)制到"%windir%/$hf_mig$"這個(gè)文件夾。反之,如果安裝程序檢測(cè)到系統(tǒng)中當(dāng)前的MSHTML.DLL為QFE版時(shí),則會(huì)用補(bǔ)丁包中QFE版的MSHTML.DLL(文件說(shuō)明為xpsp.051004-1419)來(lái)進(jìn)行更新。兩個(gè)文件的版本號(hào)都是6.00.2900.2769。
同時(shí)在注冊(cè)表中也可以發(fā)現(xiàn)這個(gè)特點(diǎn)。在我的系統(tǒng)中反映為兩個(gè)注冊(cè)表項(xiàng):HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Updates/Windows XP/SP3/KB896688/Filelist/8和HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Updates/Windows XP/SP3/KB896688/Filelist/50。兩個(gè)項(xiàng)下的FileName字串值都是"MSHTML.DLL",而Location字串值分別為"C:/WINDOWS/system32"和"c:/windows/$hf_mig$/KB896688/SP2QFE",也就是分別存放GDR和QFE文件的位置。
如果你在安裝了GDR版的KB896688補(bǔ)丁之后,又要重新安裝一個(gè)需要把MSHTML.DLL更新為QFE版的修復(fù)程序。但是該修復(fù)程序中的MSHTML.DLL版本號(hào)比6.00.2900.2769要低,那么這時(shí)候更新程序就不會(huì)選取補(bǔ)丁包中的MSHTML.DLL來(lái)更新,而是到"%windir%/$hf_mig$"去找之前預(yù)留的QFE版MSHTML.DLL來(lái)更新。所以說(shuō)一般最好不要輕易刪除Windows目錄下的"$hf_mig$"文件夾。?
總結(jié)
以上是生活随笔為你收集整理的深入剖析Windows补丁的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 基于Qt智能仪器仪表通讯软件设计
- 下一篇: 系统调优---emqx百万连接测试系统、