Windows 无法从批处理文件或VBS中删除注册表项
我有一个从计算机上删除注册表项的批处理文件,批处理文件有以下几行Windows 无法从批处理文件或VBS中删除注册表项,windows,batch-file,vbscript,cmd,Windows,Batch File,Vbscript,Cmd,我有一个从计算机上删除注册表项的批处理文件,批处理文件有以下几行 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 此批处理文件由安装程序调用(我想是In
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来删除注册表项。同样的事情再次发生。当我手动运行vbs时,它会删除注册表项,但当安装程序调用相同的vbs时,它不会删除注册表项 如果权限是问题所在,那么我想我会收到一个
权限被拒绝的错误。但事实并非如此。它只是说错误:系统无法找到指定的注册表项或值。
有人知道可能是什么问题吗?这是安装程序的常见问题-本页右侧也有类似问题。使用/reg:64参数 试试这个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
'************************************************************************
可能仍然是权限问题。当注册表项删除失败时,安装程序可能正在写入通用日志项。它可能无法捕获特定的异常并编写特定的错误描述。您是否尝试过使用管理员权限运行安装程序/卸载程序?是的,我尝试过使用管理员权限运行安装程序。。此外,remove.log是由批处理文件而不是安装程序本身创建的。。。所以不确定这是否是权限问题