当前位置: 首页 > 图文教程 > 脚本技术 > VBScript > WINDOWS脚本实践:为SAP补丁制作的VBS脚本代码

VBScript
一个最简单的vbs类实例代码
实用vbs提醒小程序
使用vbs下载文件的代码加强版
vbs病毒制作之一复制自身的vbs脚本
用vbs实现的exe2swf工具脚本代码
vbs更改3389远程桌面端口的脚本
用vbs实现的强制杀进程的脚本
用VBS脚本实现更换Windows Xp序列号的代码
vbs实现右键菜单中添加CMD HERE
用VBS脚本删除指定以外的文件或文件夹
用VBS记录客户机操作的代码
用vbs删除某些类型文件和磁盘空间报告的脚本
两个批量挂马vbs脚本代码
关于vbs WebBrowser导航问题
LCL.VBS 病毒源代码
用vbs实现向任何电子邮件发送邮件
用VBS检测Guest状态的脚本
用vbs实现的输入助手附使用方法
vbs base64 解密脚本代码
用vbs实现修改dns的网关脚本

VBScript 中的 WINDOWS脚本实践:为SAP补丁制作的VBS脚本代码


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-11   浏览: 94 ::
收藏到网摘: n/a

脚本主要功能包括:
注册表读取与修改
文件内容修改如HOSTS、SERVICES文件
文件属性修改和文件复制
系统环境变量设置
等,仅供参考
复制代码 代码如下:

'SAP设置脚本
'编写:SCZ 2005.04.20
'最后修改日期: 2005.04.22
'必须存在目录: BW(补丁文件) 和 登入界面
'========================================================================
'全局变量、处理过程
'========================================================================
WScript.Echo "该脚本只能正常运行在WIN2000/XP/2003的操作系统管理员权限下,按'确定'继续"
Set objFSO = CreateObject("Scripting.FileSystemObject") '文件系统对象
strWindir = GetWindir() '获取WINDOWS目录
strSystem = GetSystemPath() '获取System目录
strSapPath = GetSAPPath() 'SAP FrontEnd目录
strSapGuiPath = strSapPath & "SAPgui" 'SapGui目录
strSapBWPath = strSapPath & "BW" 'BW目录
strHostPath = GetHostFilePath() 'host 文件所在目录
strServicesPath = GetServicesPath() 'services 文件所在目录
Call CopyFiles() '复制文件
Call ModifyHost(strHostPath) '修改HOST文件
Call ModifyServices(strServicesPath) '修改SERVICES文件
Call SetEvn(strSapGuiPath) '设置环境变量
Call SetTCPIP(strServicesPath) '修改TCPIP参数
WScript.Echo "BW设置处理完毕,请手动安装SAP系统补丁"

'========================================================================
'通过注册获取SAP FrontEnd目录
'========================================================================
Function GetSAPPath()
Const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\" & _
strComputer & " ootdefault:StdRegProv")
strKeyPath = "SOFTWARESAPSAP Shared"
strEntryName = "SAPdestdir"
objReg.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strEntryName,strValue
GetSAPPath = strValue
If IsNull(strValue) Then
Wscript.Echo "SAP注册信息读取失败,SAP未安装或系统已损坏,安装终止"
Err.Raise(507)
Err.Clear
End If
End Function

'========================================================================
'获取WINDOWS目录
'========================================================================
Function GetWindir()
Const WindowFolder = 0
Set GetWindir = objFSO.GetSpecialFolder(WindowFolder)
End Function

'========================================================================
'获取SYSTEM目录
'========================================================================
Function GetSystemPath()
Const SystemFolder = 1
Set GetSystemPath = objFSO.GetSpecialFolder(SystemFolder)
End Function

'========================================================================
'获取HOST文件所在目录
'========================================================================
Function GetHostFilePath()
GetHostFilePath = strSystem & "driversetc"
End Function

'========================================================================
'获取Services文件所在目录
'========================================================================
Function GetServicesPath()
GetServicesPath = strSystem & "driversetc"
End Function
'========================================================================
'复制文件
'========================================================================
Function CopyFiles()
If NOT objFSO.FolderExists(strSapBWPath) Then
WScript.Echo "BW组件未安装,请先安装SAP的BW组件,再运行该脚本"
Err.Raise(507)
Err.Clear
End If
Call ClearAttribs(strSapBWPath)
objFSO.CopyFile "登陆界面*.ini" , strWindir
objFSO.CopyFile "BWgssntlm.dll" , strSapGuiPath & "gssntlm.dll"
objFSO.CopyFile "BWsncgss32.dll" , strSystem & "sncgss32.dll"
strBakFolder =strSapBWPath & "ak"
IF NOT objFSO.FolderExists(strBakFolder) Then
objFSO.CreateFolder(strBakFolder)
Else
Call ClearAttribs(strBakFolder)
End If
objFSO.CopyFile strSapBWPath & "*.xla" , strBakFolder
objFSO.CopyFile "BW*.xla" , strSapBWPath
End Function
'========================================================================
'去除文件只读属性
'========================================================================
Function ClearAttribs(strFolder)
Call ClearFileAttrib(strFolder & "sapbex.xla")
Call ClearFileAttrib(strFolder & "sapbexc.xla")
Call ClearFileAttrib(strFolder & "sapbexs.xla")
Call ClearFileAttrib(strFolder & "sapbex0.xla")
Call ClearFileAttrib(strSystem & "sncgss32.dll")
End Function
'========================================================================
'去除文件只读属性
'========================================================================
Function ClearFileAttrib(strFile)
If objFSO.FileExists(strFile) Then
Set f = objFSO.GetFile(strFile)
f.Attributes = 0
End If
End Function
'========================================================================
'修改HOST文件
'========================================================================
Function ModifyHost(strHostPath)
strHostFile = strHostPath & "hosts"
strHostBak = strHostPath & "hosts.bak"
Const ForReading = 1, ForWriting = 2, ForAppending = 8
objFSO.CopyFile strHostFile , strHostBak
Set objFile = objFSO.OpenTextFile(strHostFile, ForReading, False)
strContents = objFile.ReadAll
objFile.Close
Set objFile = objFSO.OpenTextFile(strHostFile, ForAppending, False)
objFile.WriteBlankLines 1
compResult = Instr(strContents,"192.168.0.136")
If compResult = 0 Then objFile.WriteLine("192.168.0.136" & Chr(9) & "bwprd")
compResult = Instr(strContents,"192.168.0.135")
If compResult = 0 Then objFile.WriteLine("192.168.0.135" & Chr(9) & "bwdev")
compResult = Instr(strContents,"192.168.0.171")
If compResult = 0 Then objFile.WriteLine("192.168.0.171" & Chr(9) & "bwqas")
objFile.close
End Function
'========================================================================
'修改SERVICES文件
'========================================================================
Function ModifyServices(strServicesPath)
strServicesFile = strServicesPath & "services"
strServicesbak = strServicesPath & "services.bak"
Const ForReading = 1, ForWriting = 2, ForAppending = 8
objFSO.CopyFile strServicesFile , strServicesbak
Set objFile = objFSO.OpenTextFile(strServicesFile, ForReading, False)
strContents = objFile.ReadAll
objFile.Close
Set objFile = objFSO.OpenTextFile(strServicesFile, ForAppending, False)
objFile.WriteBlankLines 1
compResult = Instr(strContents, "sapmsP01")
If compResult = 0 Then objFile.WriteLine("sapmsP01" & Chr(9) & "3600/tcp")
objFile.Close
End Function
'========================================================================
'设置环境变量
'------------------------------------------------------------------------
Function SetEvn(strSapGuiPath)
strComputer = "."
Set objWMIService = GetObject("winmgmts:\" & strComputer & " ootcimv2")
Set colItems = objWMIService.ExecQuery( "Select * from Win32_Environment where name = 'SNC_LIB'")
Found = False
For Each objItem in colItems
If UCase(objItem.Name) = "SNC_LIB" Then
Found = True
objItem.VariableValue = strSapGuiPath & "gssntlm.dll"
objItem.Put_
End If
Next
If (Found = False) Then
Set oEvn = objWMIService.Get("Win32_Environment").Spawninstance_
oEvn.Name = "SNC_LIB"
oEvn.VariableValue = strSapGuiPath & "gssntlm.dll"
oEvn.SystemVariable = True
oEvn.UserName = "<SYSTEM>"
oEvn.Status = "OK"
Set oPath = oEvn.Put_
End If
End Function
'========================================================================
'========================================================================
'设置TCP/IP参数
'------------------------------------------------------------------------
Function SetTCPIP(strServicesPath)
Const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\" & _
strComputer & " ootdefault:StdRegProv")
strKeyPath = "SYSTEMCurrentControlSetServicesTcpipParameters"
strEntryName = "DataBasePath"
objReg.SetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strEntryName,strServicesPath
End Function
'========================================================================