从VBS导入的Reg文件不完整

时间:2017-08-31 08:49:46

标签: vbscript registry registrykey

我遇到以下问题:

客户的自定义安装脚本需要导入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

1 个答案:

答案 0 :(得分:0)

尽管脚本的工作目录设置为正确的路径,但在我的情况下通过使用绝对路径而不是相对路径来解决问题。显然,使用相对路径导致根本找不到.reg文件,并且匹配.reg文件的第一行的注册表项是由之前调用的exe安装程序创建的。