2017-08-31 96 views
1

我有以下問題:Reg文件從VBS導入不完整

客戶的自定義安裝腳本需要導入一個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

我不覺得你的* CMD *代碼有什麼問題。請顯示您的* VBScript *代碼。 –

+0

我添加了有關調用的信息 –

+1

將命令行更改爲'cmd/c reg import ... >> C:\ reg.log 2>&1',以便您從導入命令的實際輸出中獲得日誌。同時檢查退出代碼:'rc = oShell.Run(sCmd,0,True):如果rc <> 0則WScript.Echo「Reg導入失敗。退出代碼:」&rc'。 –

回答

0

儘管腳本的工作目錄被設置爲正確的路徑,在我的情況下,通過使用絕對路徑而不是o解決了問題f相對。顯然,使用相對路徑導致根本找不到.reg文件,並且匹配.reg文件的第一行的註冊表項是由之前調用的exe安裝程序創建的。