我遇到以下问题:
客户的自定义安装脚本需要导入reg文件。它是使用命令(32位)
在系统上下文中运行的VBScript文件完成的
cmd /c reg import reg_neu32Bit.reg /reg:32
或64位
cmd /c reg import reg_neu.reg /reg:64
从具有管理员权限的控制台手动运行时,它会成功导入所有密钥。但是,当从VBScript运行时,导入在中间中断,没有反馈,只导入了一些键(直到行NetworkServerFile),在注册表中找不到此行下面的键。
reg文件如下所示:
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Company\__Tool3] "EnableEM"="True" "EnableRegistry"="True" [HKEY_LOCAL_MACHINE\SOFTWARE\SOME_SOFT\Tool3_V3\SOMETHING] "PathToInstantClient"="C:\\Program Files\\SOME_SOFT\\Tool3_V3\\instant_client" "MemorySize"="640000" "RowCount"="1000" "CONNECTIONTYPE"="SOMETHING" "NetworkServerStatus"="False" "NetworkServerFile"="" "CheckIsAdmin"="success" "PWD"="123456......................" "TNS"="appp" "USR"="app" "NLS_LANG"="GERMAN_GERMANY.AL16UTF16" "BIN_PWD"=hex:ab..... "TNS_ADMIN"="\\\\somenetpath"
知道为什么会这样吗?
修改
VBScript代码:
ReDim Preserve aShellRunAI(0)
If iBits = 64 Then
aShellRunAI(0) = "cmd /c reg import reg_neu.reg /reg:64"
Else
aShellRunAI(0) = "cmd /c reg import reg_neu32Bit.reg /reg:32"
End If
以后的顺序:
For Each sCmd In aShellRunAI
WriteToLog 0, "sCmd:" & sCmd
Call oShell.Run(sCmd, 0, True)
Next
答案 0 :(得分:0)
尽管脚本的工作目录设置为正确的路径,但在我的情况下通过使用绝对路径而不是相对路径来解决问题。显然,使用相对路径导致根本找不到.reg文件,并且匹配.reg文件的第一行的注册表项是由之前调用的exe安装程序创建的。