要改變 Windows 服務的啟動順序,只要修改 Windows 的註冊表就可以了。任何 Windows 服務的註冊信息可以在註冊表的 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<Service Name>\ 鍵下找到。下面就介紹幾個與服務啟動順序相關的服務的值:
先來介紹第一步:註冊表的 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ServiceGroupOrder 鍵的 List 值中保存了表示服務組啟動順序的信息。每一個服務組都是一個字符串,通過字符串在值中排列的先後位置表示服務組被加載的先後順序。要想改變服務組的加載順序,只要改變它们的位置就可以了。方法:用 Regedit32.exe(不是,Regedit.exe,因為,在這里双击 List 值後,只能看到十六進制的數據,不便于修改。)打開該值,這是一個字符编辑環境,改變里面的組的先後順序,然後卻定改動。服務組的啟動順序就搞定了。
第二步:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GroupOrderList 鍵下有各服務組中各服務啟動順序的信息。每個服務組信息都被保存為了一個 REG_BINARY 類型的值,如:Pointer Port 服務組的值為 030000000200000001000000030000000。下面為了方便觀察,我们把它處理為 03000000 02000000 01000000 030000000 它表示 Pointer Port 服務組有三個服務,TAG 值為 2 的服務先加載,然後是 TAG 值為 1 的服務,最後是 TAG 值為 3 的服務加載(信息解讀的順序是由左到右)。要改變服務在組中的加載順序,只要编輯這個二進制串就可以了。
另外,我们還可以通過 ChangeServiceConfig API 或者 sc.exe 程序(Windows 2000 Resource Kit包中的工具)來改變服務的加載順序。這裡就不一一細說了。