Win 2000/XP自啟動程序解析
當Windows完成登錄過程,鼠標指針從繁忙到安靜,除桌面上的圖標,你還看到了什么?也許表面沒什么變化,但你有沒有注意到,你的系統托盤區多出了許多圖標,你的進程表中出現了很多的進程!Windows在啟動的時候,自動加載了很多程序,你知道它們是在什么地方被加載的嗎?
許多程序的自啟動,給我們帶來了很多方便,這是不爭的事實,但是否每個自啟動的程序對我們都有用呢?更甚者,也許有病毒或木馬在自啟動行列,而你卻不知!
到現在,你是不是覺得了解自啟動文件的藏身之處有必要呢?那好,下面我就一一指出,讓它們無外可藏!
其實Windows2000/XP中的自啟動文件,除了從以前系統中遺留下來的Autoexec.bat文件中加載外,按照兩個文件夾和9個核心注冊表子鍵來自動加載程序的。
1)“啟動”文件夾--最常見的自啟動程序文件夾。它位于系統分區的“Documents and Settings-->User-->〔開始〕菜單-->程序”目錄下。這時的User指的是你登錄的用戶名。
2)“All Users”中的自啟動程序文件夾--另一個常見的自啟動程序文件夾。它位于系統分區的“Documents and Settings-->All User-->〔開始〕菜單-->程序”目錄下。前面提到的“啟動”文件夾運行的是登錄用戶的自啟動程序,而“All Users”中啟動的程序是在所有用戶下都有效(不論你用什么用戶登錄)。
3)“Load”鍵值--一個埋藏得較深的注冊表鍵值。位于〔HKEY_CURRENT_USERSoftwareMicrosoftWindows NTCurrentVersionWindowsload〕主鍵下。
4)“Userinit”鍵值--它則位于〔HKEY_LOCAL_MacHINESoftwareMicrosoftWindows NTCurrentVersionWinlogonUserinit〕主鍵下,也是用于系統啟動時加載程序的。一般情況下,其默認值為“userinit.exe”,由于該子鍵的值中可使用逗號分隔開多個程序,因此,在鍵值的數值中可加入其它程序。
5)“ExplorerRun”鍵值--與“load”和“Userinit”兩個鍵值不同的是,“ExplorerRun”同時位于〔HKEY_CURRENT_USER〕和〔HKEY_LOCAL_MACHINE〕兩個根鍵中。它在兩個中的位置分別為〔HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionPolicIEsExplorerRun〕和〔HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionPoliciesExplorerRun〕下。
6)“RunServicesOnce”子鍵--它在用戶登錄前及其它注冊表自啟動程序加載前面加載。這個鍵同時位于〔HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRunServicesOnce〕和〔HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRunServicesOnce〕下。
7)“RunServices”子鍵--它也是在用戶登錄前及其它注冊表自啟動程序加載前面加載。這個鍵同時位于〔HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRunServices〕和〔HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRunServices〕下。
8)“RunOnceSetup”子鍵--其默認值是在用戶登錄后加載的程序。這個鍵同時位于〔HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRunOnceSetup〕和〔HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRunOnceSetup〕下。
9)“RunOnce”子鍵--許多自啟動程序要通過RunOnce子鍵來完成第一次加載。這個鍵同時位于〔HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRunOnce〕和〔HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRunOnce〕下。位于〔HKEY_CURRENT_USER〕根鍵下的RunOnce子鍵在用戶登錄扣及其它注冊表的Run鍵值加載程序前加載相關程序,而位于〔HKEY_LOCAL_MACHINE〕主鍵下的Runonce子鍵則是在操作系統處理完其它注冊表Run子鍵及自啟動文件夾內的程序后再加載的。在Windows XP中還多出一個〔HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRunOnceEX〕子鍵,其道理相同。
10)“Run”子鍵--目前最常見的自啟動程序用于加載的地方。這個鍵同時位于〔HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun〕和〔HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRun〕下。其中位于〔HKEY_CURRENT_USER〕根鍵下的Run鍵值緊接著〔HKEY_LOCAL_MACHINE〕主鍵下的Run鍵值啟動,但兩個鍵值都是在“啟動”文件夾之前加載。
11)再者就是Windows中加載的服務了,它的級別較高,用于最先加載。其位于〔HKEY_LOCAL_MACHINESystemCurrentControlSetServices〕下,看到了嗎,你所有的服務加載程序都在這里了!
12)Windows Shell──它位于〔HKEY_LOCAL_MACHINESoftwareMicrosoftWindows NTCurrentVersionWinlogon〕下面的Shell字符串類型鍵值中,基默認值為Explorer.exe,當然可能木馬程序會在此加入自身并以木馬參數的形式調用資源管理器,以達到欺騙用戶的目的。
13)BootExecute──它位于注冊表中〔HKEY_LOCAL_MACHINESystemControlSet001Session Manager〕下面,有一個名為BootExecute的多字符串值鍵,它的默認值是'autocheck autochk *',用于系統啟動時的某些自動檢查。這個啟動項目里的程序是在系統圖形界面完成前就被執行的,所以具有很高的優先級。
14)策略組加載程序——打開Gpedit.msc,展開“用戶配置——管理模板——系統——登錄”,就可以看到“在用戶登錄時運行這些程序”的項目,你可以在里面添加。在注冊表中[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionGroup Policy Objects本地UserSoftwareMicrosoftWindowsCurrentVersionPoliciesExplorerRun]你也可以看到相對應的鍵值。