我有一个批处理文件,它从计算机中删除注册表项,批处理文件包含以下行。
REG DELETE HKEY_LOCAL_MACHINE\SOFTWARE\Test\Installation\Test-x64-9.2 /f > remove.log 2>&1
REG DELETE HKEY_LOCAL_MACHINE\SOFTWARE\Test\Service\Test-x64-9.2 /f > remove.log 2>&1
安装程序调用此批处理文件(我猜是InstallAnywhere)。当安装程序运行并执行此批处理文件时,remove.log指出:
ERROR: The system was unable to find the specified registry key or value.
当我手动运行此批处理文件时,它可以正常工作。我认为批处理文件存在一些问题,所以我创建了一个VBScript来删除Reg条目。同样的事情。
当我手动运行vbs时,它删除了reg键,但是当安装程序调用相同的vbs时,它不会删除reg条目。
如果权限是问题,那么我想我会收到permission denied
错误。没有。它只是说ERROR: The system was unable to find the specified registry key or value.
有谁知道这可能是什么问题?
答案 0 :(得分:1)
试试这个Vbscript
Option Explicit
Dim WshShell,MyKey1,MyKey2,MyKeys,i
MyKey1 = "HKEY_LOCAL_MACHINE\SOFTWARE\Test\Installation\Test-x64-9.2"
MyKey2 = "HKEY_LOCAL_MACHINE\SOFTWARE\Test\Service\Test-x64-9.2"
Set WshShell = CreateObject("WScript.Shell")
MyKeys = Array(MyKey1,MyKey2)
For i = LBound(MyKeys) To UBound(MyKeys)
If RegExists(MyKeys(i)) = True Then
WshShell.RegDelete(MyKeys(i))
Msgbox "The key " & DblQuote(MyKeys(i)) & " is deleted ! ",VbInformation,DblQuote(MyKeys(i))
Else
Msgbox "ERROR " & VbTab & Err.Description & VbCrLF & "The key " & DblQuote(MyKeys(i)) & " NOT FOUND ! ",VbCritical,DblQuote(MyKeys(i))
End if
Next
'************************************************************************
Function RegExists(value)
On Error Resume Next
Dim WS
Set WS = CreateObject("WScript.Shell")
val = WS.RegRead(value)
If (Err.number = -2147024893) or (Err.number = -2147024894) Then
RegExists = False
Else
RegExists = True
End If
End Function
'************************************************************************
Function DblQuote(Str)
DblQuote = Chr(34) & Str & Chr(34)
End Function
'************************************************************************
答案 1 :(得分:0)
这是安装程序的常见问题 - 本页右侧有类似的问题。使用/ reg:64参数。 http://support.microsoft.com/kb/948698/en-au