Windows指令碼簡介
Windows指令碼可以用來自動化管理電腦的設定。它是基於解釋的,可以與windows shell資源進行互動.windows 指令碼的下一代是power shell更功能強大更好用。
問題:
開發b/s程式,有時候會遇到由於安全問題要對IE 進行特別的設定。理想的情況是使用者對ie比較熟悉,那麼只要在協助中寫好說明,按說明設定IE就好了。但是實際的情況是大多是使用者即使那麼IE設定協助也無法完成設定。那麼,怎麼辦?讓客服人員去協助使用者設定,對於b/s來說。客戶群巨大,這樣做不現實。如果有簡單方法讓使用者去設定,這個問題也可以解決。比如下載個檔案,雙擊執行,一切搞定。這個時候windows指令碼就成了不二之選。
解決方案:
案例:
用戶端設定IE的屬性:
1. 把某個網站加到可信網站;
2. 對可信網站的未標記為安全activeX執行初始化,並關閉activeX初始化的提示資訊
指令碼如下:
'----------------------------------------------------------------------------
'IE 用戶端設定指令碼
'write by hbb0b0
'2009-09-04
'----------------------------------------------------------------------------
IP="xxx.xxx.xxx.xxx"
Const HKEY_CURRENT_USER = &H80000001
strComputer = "."
Set StdOut = WScript.StdOut
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!""" &_
strComputer & ""root"default:StdRegProv")
strKeyRanges = "Software""Microsoft""Windows""CurrentVersion""Internet Settings""ZoneMap""Ranges"
oReg.EnumKey HKEY_CURRENT_USER, strKeyRanges, arrSubKeys
Dim strKeyName
Dim strValue
hasIP=false
'檢查IP是否已添加到受信網站
For Each subkey In arrSubKeys
'' StdOut.WriteLine subkey
strKeyName=strKeyRanges+""""+subkey
oReg.GetStringValue HKEY_CURRENT_USER,strKeyName,":Range",strValue
' StdOut.WriteLine "Name:" & subKey+ " value:" & strValue
If strValue=IP Then
hasIP=True
Exit For
End If
Next
'如果IP沒有添加到可信網站,則添加Ip到可信網站
If hasIP=false Then
rangeName1=strKeyRanges+""""+"Range100"
'' StdOut.WriteLine "hello" + rangeName1
oReg.CreateKey HKEY_CURRENT_USER,rangeName1
rangeName2=":Range"
'' StdOut.WriteLine "hello" + rangeName2
oReg.SetStringValue HKEY_CURRENT_USER,rangeName1,rangeName2,IP
rangeName3="http"
rangeName3Value=2
'' StdOut.WriteLine "hello" + rangeName3
oReg.SetDWORDValue HKEY_CURRENT_USER,rangeName1,rangeName3,rangeName3Value
' StdOut.WriteLine "可信網站已添加"+IP
End If
'可信網站的允許不可信的activeX初始化
strKeyActiveX="Software""Microsoft""Windows""CurrentVersion""Internet Settings""Zones""2"
'檢查是否已設定了activeX初始化
Dim str1201Value
hasActiveXInit=False
oReg.GetDWORDValue HKEY_CURRENT_USER,strKeyActiveX,1201,str1201Value
' StdOut.WriteLine strKeyActiveX+"""1201 :" +Cstr(str1201Value)
IF str1201Value=0 Then
hasActiveXInit=True
End If
If hasActiveXInit=False Then
oReg.SetDWORDValue HKEY_CURRENT_USER,strKeyActiveX,1201,0
oReg.GetDWORDValue HKEY_CURRENT_USER,strKeyActiveX,1201,str1201NewValue
' StdOut.WriteLine strKeyActiveX+"""1201(new) :" +Cstr(str1201NewValue)
End If
'設定關閉IE 可信網站的IE 提示
'檢查是否已關閉了activeX提示
Dim str2201Value
hasActiveXWarning=False
oReg.GetDWORDValue HKEY_CURRENT_USER,strKeyActiveX,2201,str2201Value
' StdOut.WriteLine strKeyActiveX+"""2201 :" +Cstr(str2201Value)
IF str2201Value=0 Then
hasActiveXWarning=True
End If
'沒有關閉activeX提示的話就關閉
If hasActiveXWarning=False Then
oReg.SetDWORDValue HKEY_CURRENT_USER,strKeyActiveX,2201,0
oReg.GetDWORDValue HKEY_CURRENT_USER,strKeyActiveX,2201,str2201NewValue
' StdOut.WriteLine strKeyActiveX+"""2201(new):" +Cstr(str2201NewValue)
End If
注意:
Windows 指令碼宿主有兩個版本:基於 Windows 的版本 (Wscript.exe),它提供用於設定指令碼屬性的屬性單;另一個是基於命令提示字元的版本 (Cscript.exe),它提供用於設定指令碼屬性的命令列開關。通過在命令提示字元下鍵入 Wscript.exe 或 Cscript.exe 可以運行其中某一個。
如果在Wcript中運行:
Set StdOut = WScript.StdOut
StdOut.WriteLine “hello world”
StdOut會報錯,它一直為空白。它只能在Cscript中被初始化。命令列執行模式下才有控制台輸出對象。