2012年5月29日 星期二

Windows XP runas批次檔自動帶入密碼

runas指令可以讓非管理員身分的帳號直接用指令的帳號執行需要的程式,感覺上有點像linux上的su和sudo指令,但runas執行時需要在螢幕上輸入指定使用帳號的密碼!若想要將runas寫成批次檔形式可以用以下方法來解決密碼輸入的問題!
利用vbscript來完成需要的動作,如下,利用vbscript來完成關機的動作;
新增一個shutdown.vbs的文字檔,文字檔內容如下:

set WshShell = CreateObject("WScript.Shell")
WshShell.Run "runas /user:administrator ""C:\WINDOWS\system32\shutdown.exe -s -f -t 02"""
WScript.Sleep 1000
WshShell.Sendkeys "password~"
上方runas /user:administrator表示我要使用administrator這個號,
C:\WINDOWS\system32\shutdown.exe -s -f -t 02是我要執行的指令,我希望強制電腦關機在兩秒後!
WshShell.Sendkeys "password~"中的password是administrator的密碼,~表示carriage return。

若不希望user打開vbs的看到其中的內容,可以至微軟官網下載 script encoder 將其加密為.vbe
http://www.microsoft.com/downloads/details.aspx?FamilyId=E7877F67-C447-4873-B1B0-21F0626A6329&displaylang=en

先將上述檔案內容改成如下:

'**Start Encode**
set WshShell = CreateObject("WScript.Shell")
WshShell.Run "runas /user:administrator ""C:\WINDOWS\system32\shutdown.exe -s -f -t 02"""
WScript.Sleep 1000
WshShell.Sendkeys "password~"

接著將完成的shutdown.vbs放在在screnc.exe的所在目錄下,並在此執行以下指令

screnc /l vbscript shutdown.vbs shutdown.vbe
接著給予與user 加密過的shutdown.vbe執行即可!