這第四種方法較之前面的第二,第三種方法,是最可行的一種,可能百發百中吧.:)請著重看啟動腳本的最後一種應用. 深入淺出Win2000計算機啟動/關機腳本 一.簡介 Win2000計算機啟動/關機腳本(startup/shutdown scripts)是Win2000的一個新特點.啟動腳本是邀請用戶登錄之前運行的批文件,它的功能類似於Win9X和DOS中的自動執行批處理文件autoexec.bat;關機腳本是計算機關機之前運行的批文件. 與Win2000用戶登錄/注銷腳本(logon/logoff scripts)相比,它們之間的主要區別是:計算機啟動/關機腳本在計算機啟動和關機時運行,腳本程序只運行一次,通常在啟動腳本運行完畢後才出現邀請用戶登錄的對話框;用戶登錄/注銷腳本在邀請用戶登錄的對話框出現後,用戶登錄系統或從系統注銷時運行,運行次數由用戶登錄/注銷的次數決定,每登錄/注銷系統一次,腳本程序就運行一次. 二.指派 在啟用計算機啟動/關機腳本前,必須進行指派.指派計算機啟動/關機腳本需要通過組策略MMC(管理控制台)管理單元進行,具體的操作如下: 1.單擊"開始"菜單->"運行",在打開框內輸入"MMC",打開微軟管理控制台(Microsoft Management Console,MMC). 2.單擊"控制台"菜單->"添加/刪除管理單元...",在跳出"添加/刪除管理單元"對話框內單擊"添加"按鈕,添加獨立管理單元. 3.在"添加獨立管理單元"對話框的"可用的獨立管理單元"列表內選擇"組策略",按下面的"添加"按鈕. 4.當系統詢問使用哪一個組策略對象時,如果你要指派面向本地計算機,只在本地計算機執行的啟動/關機腳本,請選擇缺省的"本地計算機"組策略對象;如果你要指派面向Win2000域,在域內所有計算機上執行的啟動/關機腳本,那請點擊"選擇組策略對象"對話框中的"浏覽..."按鈕,在"浏覽組策略"對話框選定能應用到整個域中的組策略對象,這裡以"Default Domain Policy"對象為例,它是Win2000域缺省的域策略對象(圖一)(t1.gif). 5.完成後依次關閉各對話框回到管理控制台,現在管理控制台上就有了一個相應的組策略對象樹(圖二)(t2.gif). 6.在管理控制台左側的控制台樹窗格中,依次展開組策略對象->"計算機配置"->"Windows設置"->"腳本(啟動/關閉)"節點,雙擊右側詳細資料窗格中的"啟動"或"關機"項目就可以設置計算機啟動或關機時使用的腳本了(圖三)(t3.gif)(因Win2000計算機啟動和關機腳本的設置方法相同,下面的操作均以啟動腳本為例). 7.雙擊右側詳細資料窗格中的"啟動"項目,在跳出的"啟動屬性"對話框中點擊"添加"按鈕,添加新的計算機啟動腳本. 8.一個啟動腳本條目包括兩方面的內容:腳本名和腳本參數(圖四)(t4.gif).如果腳本名不包含文件路徑,比如圖中的腳本文件名只是"scripta.vbs",系統會到缺省的計算機啟動腳本路徑下尋找這個腳本文件.腳本的參數是可選的,可填可不填,看實際情況而定,圖中的開機腳本使用了運行參數"start". 9.本地計算機腳本的缺省路徑通常是"%systemroot%\system32\GroupPolicy\Machine\Scripts",如"C:\winnt\system32\GroupPolicy\Machine\Scripts".應用到域的計算機腳本的缺省路徑通常是""\\\sysvol\\Policies\\Machine\Scripts",如"\\MyDC1\sysvol\Mydom.com\Policies\{31B2F340-016D-11D2-832F-00C04FB873F9}\Machine\Scripts".啟動腳本文件存放在"Startup"子文件夾中,關機腳本文件存放在"ShutDown"子文件夾中. 10.我們可以根據需要重復點擊"啟動屬性"對話框中的"添加"按扭,為計算機添加多個啟動腳本(圖五)(t5.gif). 11.設置完畢,保存後退出組策略MMC管理單元.等組策略刷新後,這些腳本就會在計算機啟動和關機時起作用. 三.深入 1.我們對計算機啟動/關機腳本的設置數據被Win2000保存在了一個名為scripts.ini的隱藏配置文件中,這個文件位於"C:\WINNT\system32\GroupPolicy\Machine\Scripts"目錄下,可以使用任一款文件編輯軟件如記事本進行編輯. scripts.ini文件內容通常包含兩個數據段:[Startup]和[Shutdown],[Startup]數據段下是啟動腳本配置,[Shutdown]數據段下是關機腳本配置.每個腳本條目被分成腳本名和腳本參數兩部分存貯,腳本名保存在XCmdLine關鍵字下,參數保存在XParameters關鍵字下,這裡的X表示從0開始的腳本序號,以區別多個腳本條目和標志各腳本條目的運行順序.下面是一個簡單的scripts.ini文件的例子: [Startup] 0CmdLine=d:\start\ss.bat 0Parameters= 1CmdLine=scriptsa.vbs 1Parameters=start [Shutdown] 0CmdLine=shut.vbs 0Parameters= 從例子中我們可以看出,共設置了兩個計算機啟動腳本:ss.bat和scripta.vbs.ss.bat位於d:\start目錄下,沒有使用參數;scriptsa.vbs位於缺省的啟動腳本目錄C:\WINNT\system32\GroupPolicy\Machine\Scripts\Startup下,使用了參數"start".兩個腳本的執行順序是先執行ss.bat後執行scriptsa.vbs.設置了一個關機腳本shut.vbs,沒有使用參數,該腳本位於缺省的關機腳本目錄C:\WINNT\system32\GroupPolicy\Machine\Scripts\Shutdown下. 2.啟動/關機腳本的運行情況,包含是否同步運行、是否顯示運行狀態、最長等待時間等,都可以在組策略中進行微調.具體操作如下: (1)-(5)步同第二部分指派操作中的1-5步; (6)在管理控制台左側的控制台樹窗格中,依次展開組策略對象->"計算機配置"->"管理模板"->"登錄"節點,右側詳細內容窗格中顯示的內容有四項與啟動/關機腳本有關(圖六)(t6.gif):非同步運行啟動腳本,顯示啟動腳本的運行狀態,顯示關機腳本的運行狀態,組策略腳本的最長等待時間. (7)非同步運行啟動腳本 在默認情況(也就是沒有配置的情況,下同)下,系統要等每個啟動腳本運行完畢才運行下一個啟動腳本.如果啟用這個策略,系統則不會協調啟動腳本的運行順序,啟動腳本可以同時運行.如果停用或不配置這個策略,每個啟動腳本要在上一個腳本運行完畢後才能運行.建議不配置.
這個策略對應的注冊表值是"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\system\RunStartupScriptSync",這是一個REG_DWORD值,0表示啟用,1表示禁用. (8)顯示啟動/關機腳本的運行狀態 在默認情況下,系統不顯示啟動腳本中的指令.如果啟用這個策略,系統會在啟動腳本運行時顯示每個指令,指令將出現在命令窗口,或顯示出人機交互界面。這個功能主要是為高級用戶設計的.如果停用或不配置這個策略,指令則不會顯示.建議不配置. 舉個例子,假設你在啟動腳本中有一條命令是"c:\winnt\explorer.exe c:\winnt",如果啟用了這一策略允許顯示啟動腳本的運行狀態,那麼當計算機啟動時,一個資源管理器窗口就會跳出來,桌面被打開,系統以system用戶的身份交互登錄到計算機上,這無異於那個著名的輸入法漏洞!由此可以看出,打開啟動/關機腳本的運行狀態有時是非常危險的. 這兩個組策略條目對應的注冊表值分別是"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\system\HideStartupScripts"和"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\system\HideShutdownScripts",均為REG_DWORD值,0表示啟用,1表示禁用. (9)組策略腳本的最長等待時間 這個策略限制了由組策略完成運行登錄、開始和關閉腳本所需的全部時間.如果當指定時間已超過但腳本尚未完成運行,系統會停止腳本處理並記錄一個錯誤事件.在默認情況下,系統允許合並的腳本集運行600秒(10分鐘). 要使用這個策略,在第二個框中鍵入從1到32000之間的數目以確定您希望系統等待腳本完成的時間,單位是秒.要讓系統一直等到完成運行腳本為止,無論等待時間多久,請鍵入0(圖七)(t7.gif).但不建議這樣,如果你的腳本寫的很差,那後果將難以想象! 如果其它系統任務必須等待腳本完成才能進行,這個間隔時間就非常關鍵.在默認的情況下,必須完成每一個啟動腳本後才能運行下一個,您還可以使用"非同步運行啟動腳本"策略讓系統等到完成啟動腳本後再出現邀請用戶登錄的對話框.間隔過長可延緩系統並使用戶不方便,如果間隔太短,所需的任務無法完成系統會可能會過早就緒,導致出現問題. 這個組策略條目對應的注冊表值是"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\system\MaxGPOScriptWait",也是一個REG_DWORD值,它的值表示等待的時間,單位是秒. 四.應用 計算機啟動/關機腳本的用途很多,下面舉三個比較典型的例子: 1.計算機啟動和關機時間審核 (1)編寫一個能夠記錄時間的腳本LogTime.vbs,內容如下: '================================================ dim ArgObj,str,strtmp Set ArgObj = WScript.Arguments If ArgObj.Count < 1 Then strtmp="無參數操作!" else select case ArgObj.Item(0) case "startup" strtmp=" 服務器啟動." case "shutdown" strtmp=" 服務器關閉." case else strtmp=" 未知操作!參數:" ArgObj.Item(0) end select end if set fso=CreateObject("Scripting.FileSystemObject") set tmp=fso.opentextfile("d:\log\logtime.txt",8,true) str="[" cstr(now()) "] " strtmp chr(13) chr(10) tmp.write str tmp.close set tmp=nothing set fso=nothing '===============
,