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)按照前面的方法將腳本設置好.每次計算機啟動或關機,這個腳本都會運行,并將計算機啟動或關機的時間(實際上這個腳本運行時的時間,但兩(電腦沒聲音)者應該相差無幾)記錄到一個文本文件中,例子中是"d:/log/logtime.txt",可以根據需要更改.
2.刪除一些特殊的共享
在Win2000中,由于計算機管理、用戶登錄等方面的需要,系統會建立許多特殊的共享,如C$、D$、ADMIN$、IPC$、NETLOGON等,但這些共享并不是所有的計算機都必須的.使用"計算機管理"MMC或net share命令等禁止這些共享,只是一種治標不治本的方法,它們在計算機重新啟動后會重新出現.基于安全等方面的考慮,我們有時希望將這些共享徹底刪除.現在刪除這類特殊共享的方法比較多,如編輯注冊表,下面就再提供一種使用啟動腳本刪除這些特殊共享的方法.
(1)編寫一個能刪除特殊共享的批處理文件DelShare.bat,內容如下:
net share C$ /delete
net share D$ /delete
net share IPC$ /delete
net share NETLOGON /delete
(2)按照前面的方法將腳本設置為啟動腳本,重新啟動計算機.OK,一切都清凈了.
3.恢復管理員密碼或新建管理員賬號
丟失管理員密碼是件非常令人頭疼的事情,但說不定什么時候就會碰到.在緊急情況下,如何恢復管理員密碼乃至新建一個管理員賬號,現在已經有許多成熟的技術,如經典的登錄屏幕保護程序法、使用O&O軟件等.實際上,使用啟動腳本也是一個相當不錯的選擇.
(1)如果故障計算機使用FAT/FAT32文件系統,那可直接使用Win98引導盤引導.如果使用NTFS文件系統,可將故障計算機上的硬盤取下,以從盤模式掛接到其它的Win2000計算機上.下面的操作以后一種情況為準,假設現在故障計算機的system分區(通常是C在新的計算機上成為分區E:.
(2)編寫一個能恢復管理員密碼的批處理文件admin.bat,內容只需要一條"net user"命令即可.如下:
net user administrator 12345678
這兒我們假設當前的管理員是administrator,將它的密碼恢復為"12345678". 將文件admin.bat保存到 "E:/winnt/system32/GroupPolicy/Machine/Scripts/Startup" 下,也就是故障計算機原來的 "C:/winnt/system32/GroupPolicy/Machine/Scripts/Startup" 下.
(3)編寫一個啟動/關機腳本配置文件scripts.ini,這個文件名是固定的,不能改變.內容如下:
[Startup]
0CmdLine=admin.bat
0Parameters=
將文件scripts.ini保存到"E:/winnt/system32/GroupPolicy/Machine/Scripts"下,也就是故障計算機原來的 "C:/winnt/system32/GroupPolicy/Machine/Scripts" 下.
(4)將硬盤恢復為主盤,接回原來的計算機,重新啟動,等待啟動腳本運行.啟動腳本運行結束管理員administrator的密碼就被恢復為"12345678".
(5)如果要新建一個管理員賬號,admin.bat文件的內容可以修改為:
net user admin 12345678 /add
net localgroup administrators admin /add
這樣一個名為"admin",密碼是"12345678"的管理員賬號就建立了.
這個方法不僅可以恢復獨立服務器上本地管理員密碼,也可以恢復Win2000域中域管理員的密碼.
新聞熱點
疑難解答
圖片精選