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中被初始化。命令行执行模式下才有控制台输出对象。