萬盛學電腦網

 萬盛學電腦網 >> 電腦常見故障 >> 不能啟動 >> Win2000計算機啟動關機腳本的介紹

Win2000計算機啟動關機腳本的介紹

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域缺省的域策略對象.

5.完成後依次關閉各對話框回到管理控制台,現在管理控制台上就有了一個相應的組策略對象樹.

6.在管理控制台左側的控制台樹窗格中,依次展開組策略對象->"計算機配置"->"Windows設置"->"腳本(啟動/關閉)"節點,雙擊右側詳細資料窗格中的"啟動"或"關機"項目就可以設置計算機啟動或關機時使用的腳本了(因Win2000計算機啟動和關機腳本的設置方法相同,下面的操作均以啟動腳本為例).

7.雙擊右側詳細資料窗格中的"啟動"項目,在跳出的"啟動屬性"對話框中點擊"添加"按鈕,添加新的計算機啟動腳本.

8.一個啟動腳本條目包括兩(電腦沒聲音)方面的內容:腳本名和腳本參數.如果腳本名不包含文件路徑,比如圖中的腳本文件名只是"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.我們可以根據需要重復點擊"啟動屬性"對話框中的"添加"按扭,為計算機添加多個啟動腳本.

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)在管理控制台左側的控制台樹窗格中,依次展開組策略對象->"計算機配置"->"管理模板"->"登錄"節點,右側詳細內容窗格中顯示的內容有四項與啟動/關機腳本有關:非同步運行啟動腳本,顯示啟動腳本的運行狀態,顯示關機腳本的運行狀態,組策略腳本的最長等待時間.

(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.但不建議這樣,如果你的腳本寫的很差,那後果將難以想象

如果其它系統任務必須等待腳本完成才能進行,這個間隔時間就非常關鍵.在默認的情況下,必須完成每一個啟動腳本後才能運行下一個,您還可以使用"非同步運行啟動腳本"策略讓系統等到完成啟動腳本後再出現邀請用戶登錄的對話框.間隔過長可延緩系統並使用戶不方便,如果間隔太短,所需的任務無法完成系統會可能會過早就緒,導致出現問題.

這個組策略條目對應的注冊表值是
"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
'=================================================

這個腳本有兩(電腦沒聲音)個參數:startup和shutdown.當用作啟動腳本時,使用"startup"參數;當用做關機腳本時,使用"shutdown"參數.另外,腳本中使用了FileSystemObject對象,使用該腳本前請確保這個對象已經存在於你的計算機上.

(2)按照前面的方法將腳本設置好.每次計算機啟動或關機,這個腳本都會運行,並將計算機啟動或關機的時間(實

copyright © 萬盛學電腦網 all rights reserved