改變Windows服務(wù)的啟動(dòng)順序
要改變Windows服務(wù)的啟動(dòng)順序,只要修改Windows的注冊(cè)表就可 以了。任何Windows服務(wù)的注冊(cè)信息可以在注冊(cè)表的HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices<Service Name>鍵下找到。下面就介紹幾個(gè)與服務(wù)啟動(dòng)順序相關(guān)的服務(wù)的值:
Group值:一個(gè)REG_SZ類型的值。它用來描述服務(wù)屬于那一個(gè)服務(wù)組。如果服務(wù)沒有這一項(xiàng),那么它不屬于任何一個(gè)服務(wù)組,系統(tǒng)則會(huì)默認(rèn)的將其在所有的服務(wù)啟動(dòng)后加載。
Tag值:一個(gè)REG_DWORD類型的值。它用來描述服務(wù)的標(biāo)識(shí)。每一個(gè)在服務(wù)組中的服務(wù)都會(huì)被分配一個(gè)唯一的標(biāo)識(shí)。注冊(cè)表通過對(duì)服務(wù)組的服務(wù)標(biāo)識(shí)的排列來安排,同一服務(wù)組中的個(gè)服務(wù)的加載先后順序。
那么,如何改變服務(wù)的啟動(dòng)順序,現(xiàn)在就被分為了兩個(gè)步驟,一是:改變服務(wù)組的啟動(dòng)順序。二是:改變服務(wù)組中各服務(wù)的啟動(dòng)順序。
先來介紹第一步:注冊(cè)表的HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlServiceGroupOrder鍵的List值中保存了表示服務(wù)組啟動(dòng)順序的信息。每一個(gè)服務(wù)組都是一個(gè)字符串,通過字符串在值中排列的先后位置表示服務(wù)組被加載的先后順序。要想改變服務(wù)組的加載順序,只要改變它們的位置就可以了。方法:用Regedit32.exe(不是,Regedit.exe,因?yàn)椋谶@里雙擊List值后,只能看到十六進(jìn)制的數(shù)據(jù),不便于修改。)打開該值,這是一個(gè)字符編輯環(huán)境,改變里面的組的先后順序,然后確定改動(dòng)。服務(wù)組的啟動(dòng)順序就搞定了。
第二步:HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlGroupOrderList鍵下有各服務(wù)組中各服務(wù)啟動(dòng)順序的信息。每個(gè)服務(wù)組信息都被保存為了一個(gè)REG_BINARY類型的值,如:Pointer Port 服務(wù)組的值為030000000200000001000000030000000。下面為了方便觀察,我們把它處理為03000000 02000000 01000000 030000000 它表示Pointer Port 服務(wù)組有三個(gè)服務(wù),TAG值為2的服務(wù)先加載,然后是TAG值為1的服務(wù),最后是TAG值為3的服務(wù)加載(信息解讀的順序是從左到右)。要改變服務(wù)在組中的加載順序,只要編輯這個(gè)二進(jìn)制串就可以了。
另外,我們還可以通過ChangeServiceConfig API或者sc.exe程序(Windows 2000 Resource Kit包中的工具)來改變服務(wù)的加載順序。這里就不一一細(xì)說了。
