如何制作自己的Windows Service
作為一個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中不光包含安全補丁,對系統的其他方面也有所改善,土八路畢竟還是比不上正規軍的。;
相關文章: