作為一個Windows 系統的管理員,安裝安全HotFix應該是不會陌生的,每次我們在裝完一台機器後總是下載無數補丁,但煩人的是每每安裝一個HotFix系統都會Reboot一次,當然,在Reboot前我們不點擊"確定"按鈕,直接安裝完其他的補丁後一次Reboot也未嘗不可,但是這樣似乎顯得有點不大專業,今天我教大家作一個自己的Service Pack,可以把你需要安裝的補丁在一次安裝完畢,好像很Cool哦~
為了測試,我選擇了一台中文版Windows 2000 Server,而我們需要安裝的安全補丁為2個(當然不止這些,打個比方而已),一個是Windows 2000的輸入法漏洞的補丁(Q270676),一個是命名管道的補丁(Q269523)。
跟著我一起來作吧:
1、下載我們需要安裝的HotFixs,http://download.microsoft.com/download/win2000platform/Patch/Q269523/NT5/CN/Q269523_W2K_SP2_x86_CN.EXE和http://download.microsoft.com/download/win2000platform/Patch/q270676/NT5/CN/Q270676_W2K_SP2_x86_CN.EXE。
2、切換到CMD模式,在C盤創建一個hotfix的目錄,然後執行
Q269523_W2K_SP2_x86_CN.EXE /x(建議解包的順序按Q號的大小排列,由小到大,理由我會在後面提到)
看到要求輸入解包路徑的提示後輸入"C:Hotfix"。
C:>cd hotfix
C:hotfix>dir
驅動器 C 中的卷是 C
卷的序列號是 AC58-F7F5
C:hotfix 的目錄
2001-05-04; 04:00;;;;<DIR>.
2001-05-04; 04:00;;;;<DIR>..
2000-08-14; 18:57;;;;98,064 hotfix.exe
2000-08-14; 18:57;;;;15,139 hotfix.inf
2000-08-14; 17:19;;;835,856 kernel32.dll
2000-08-14; 17:19;;;;85,776 services.exe
2000-08-14; 18:31;;;;88,245 sp2.cat
2000-08-14; 18:57;;;;;3,584 spmsg.dll
2001-05-04; 04:00;;;;<DIR>symbols
2001-05-04; 04:00;;;;<DIR>uniproc
然後我們將hotfix.inf文件復制一份。
C:hotfix>copy hotfix.inf q269523_cn.inf
已復制 1 個文件。
緊接著我們將第二個HotFix解包,
Q270676_W2K_SP2_x86_CN.EXE /x
看到要求輸入解包路徑的提示後輸入"C:Hotfix"。
也將此時的hotfix.inf文件復制一份。
C:hotfix>copy hotfix.inf q270676_cn.inf
已復制 1 個文件。
第三個、第四個........重復同樣的操作。
3、此時我們已經將HotFix的文件都解包至C:Hotfix目錄,並且有了各個HotFix的inf文件的拷貝,我們現在來分析這些inf文件,一般我們把最後解包的inf文件作為模板,因為inf文件分很多字段,從我觀察的結果來看,隨著時間的推移,inf文件的字段可能會增加,這也就是我們開始解包按Q大小順序的原因,本例中我們以Q270676的inf文件為模板,我們編輯hotfix.inf文件,這個文件已經包含了Q270676的信息,我們只要把Q269523中的信息添加到該文件中即可,下面我們來分析Q269523的inf文件的內容:
前面的大部分基本都是相似的,我們只搜尋一些與眾不同的字段。
[MustReplace.System32.files]
SERVICES.EXE
[CopyAlways.DriverCab.files]
kernel32.dll
[Cache.files]
SERVICES.EXE
KERNEL32.DLL
[Uniprocessor.Kernel.files]
KERNEL32.DLL,UNIPROCKERNEL32.DLL
[Multiprocessor.Kernel.files]
KERNEL32.DLL
[SourceDisksFiles]
SERVICES.EXE=1
UNIPROCKERNEL32.DLL
KERNEL32.DLL=1
然後我們在hotfix.inf文件中搜尋MustReplace.System32.files,然後加入一行
SERVICES.EXE
為了以後方便,我們一般加上一些注釋,編輯後的hotfix.inf文件的MustReplace.System32.files字段就成了下面這個樣子:
[MustReplace.System32.files]
Q269523; Added by Adam
SERVICES.EXE
接著搜尋CopyAlways.DriverCab.files、Cache.files、Uniprocessor.Kernel.files、Multiprocessor.Kernel.files、SourceDisksFiles,並將相應的信息添加到hotfix.inf文件中,也要注意添加必要的注釋文件,inf文件中表示注釋的符號為分號。當然,我們也建議您把本身的模板文件中必要的項也作一下注釋,如2個hotfix都包含的Cache.files,我們修改後就成了:
[Cache.files]
Q269523; Added by Adam
SERVICES.EXE
KERNEL32.DLL
Q270676; Added by Adam
winzm.ime
winsp.ime
winpy.ime
wingb.ime
winabc.ime
實際上,到這一步,我們就已經可以用我們作好的東東了,但是為了以後的方便,我們必須修改一些顯示信息,這就是inf文件中的Strings字段。我們到inf文件的最末尾可以看到Strings字段,我們必須在這裡修改一些必要的信息。
首先修改Q號(不是OICQ號碼哦),將Q號改成你喜歡的6位數,當然,輸入其他字符也可以,但是也許會和某些查HotFix的軟件有沖突,還是用6位數字好了,然後修改Comments,我們把Q269523的Comment粘貼過來,也可以加上一些自己的描述,修改後的Strings字段就成了下面的樣子:
[Strings]
LangTypeValue=4
ServicePackSourceFiles="Windows 2000 Hotfix 源文件"
HOTFIX_NUMBER="Q123456"
SERVICE_PACK_NUMBER=1
COMMENT="Windows 2000 Hotfix (Pre-SP2) [See Q270676 for more information] This Fix Corrects the IME Problem...Windows 2000 Hotfix (Pre-SP2) [See Q269523 for more information] This Fix Corrects the NamePipe Problem..."
這樣也方便我們日後對已安裝的補丁進行查看。
4、好了,該修改的地方我們已經弄完了,我們開始安裝我們自己作的Service Pack吧,其實我們只要執行HotFix.exe即可,它會自己去找inf文件,然後你會看到一個拷貝文件的進度條,接著是系統要求你Reboot,點"確定",重啟,我們的HotFix就安裝完畢了。
5、最後我們可以看看效果,你可以去看看注冊表:HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionHotFix
你會發現你安裝的Q123456乖乖地呆在那裡了~很有成就感哦~
最後總結一下:每每出一個新的HotFix後,你就將文件添加到你的SP包中,然後修改你的inf文件,你就可以不去理會微軟是不是還為你發布新的SP了(NT 4的SP 7沒有了),當然,SP中不光包含安全補丁,對系統的其他方面也有所改善,土八路畢竟還是比不上正規軍的。;