Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 无法从批处理文件或VBS中删除注册表项_Windows_Batch File_Vbscript_Cmd - Fatal编程技术网

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是由批处理文件而不是安装程序本身创建的。。。所以不确定这是否是权限问题