【问题标题】:Reg file import from VBS incomplete从 VBS 导入 Reg 文件不完整
【发布时间】:2018-02-09 03:47:36
【问题描述】:

我有以下问题:

客户的自定义安装脚本需要导入一个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 注册表编辑器版本 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Company\__Tool3] “启用EM”=“真” "EnableRegistry"="真" [HKEY_LOCAL_MACHINE\SOFTWARE\SOME_SOFT\Tool3_V3\SOMETHING] "PathToInstantClient"="C:\\Program Files\\SOME_SOFT\\Tool3_V3\\instant_client" "内存大小"="640000" “行数”=“1000” “连接类型”=“某事” “网络服务器状态”=“假” "网络服务器文件"="" "CheckIsAdmin"="成功" “密码”=“123456…………” “TNS”=“应用程序” “USR”=“应用程序” "NLS_LANG"="GERMAN_GERMANY.AL16UTF16" “BIN_PWD”=十六进制: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

【问题讨论】:

  • 我认为您的 CMD 代码没有任何问题。请出示您的 VBScript 代码。
  • 我添加了关于通话的信息​​
  • 将命令行更改为cmd /c reg import ... >>C:\reg.log 2>&1,以便获得包含导入命令实际输出的日志。还要检查退出代码:rc = oShell.Run(sCmd, 0 , True) : If rc <> 0 Then WScript.Echo "Reg import failed. Exit code: " & rc
  • 谢谢!试过了 - 日志文件中有错误! FEHLER: Fehler beim ???ffnen der Datei。 Es ist m???glicherweise ein Datantr???ger- bzw。 Dateisystemfehler aufgetreten。 - 这意味着错误:打开文件时出错 - 可能是文件系统或驱动器错误。然而,返回码是 0。
  • 您是否已经检查过文件系统是否有错误?

标签: vbscript registry registrykey


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-05
    • 2018-06-08
    • 2010-11-17
    相关资源
    最近更新 更多