我尝试使用VBScript卸载已安装在我的系统中的Windows应用程序exe。但是无法卸载exe。请帮帮我。提前谢谢。
我尝试使用以下代码:
Dim oReg, oShell, oFSO
Dim UninstallString, ProductCode
Dim strComputer, colItems, objWMIService, objItem
Dim strKeyPath, subkey, arrSubKeys
strComputer = "."
'********************************
'Enter Product Code Of The Application Here That You Want To Uninstall within the Bracket
ProductCode = "{XXXXC6BA-0F96-4E3B-BB14-211E2805XXXX}"
'********************************
' Get scripting objects needed throughout script.
Set oShell = CreateObject("WScript.Shell")
'**************************
UninstallString = "Database Upgrade Utility.exe /X" & ProductCode & " /qn" & " /norestart"
Const HKEY_LOCAL_MACHINE = &H80000002
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" &_
strComputer & "\root\default:StdRegProv")
strKeyPath = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
oReg.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, arrSubKeys
For Each subkey In arrSubKeys
IF subkey = ProductCode Then
oShell.Run UninstallString, 1, True
End If
Next
Set oShell = Nothing
Set oReg = Nothing
修改后的代码
Dim oReg, oShell, oFSO
Dim UninstallString, ProductCode
Dim strComputer, colItems, objWMIService, objItem
Dim strKeyPath, subkey, arrSubKeys
strComputer = "."
'********************************
'Enter Product Code Of The Application Here That You Want To Uninstall within the Bracket
ProductCode = "{4AE9C6BA-0F96-4E3B-BB14-211E2805227E}"
'********************************
' Get scripting objects needed throughout script.
Set oShell = CreateObject("WScript.Shell")
'**************************
UninstallString = """C:\Program Files\ASCO\DatabaseUpgradeUtility\ASCO Database Upgrade Utility.exe"" /X" & ProductCode & " /qn /norestart"
'UninstallString = "ASCO Database Upgrade Utility.exe /X" & ProductCode & " /qn" & " /norestart"
InputBox(UninstallString)
Const HKEY_LOCAL_MACHINE = &H80000002
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" &_
strComputer & "\root\default:StdRegProv")
strKeyPath = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
oReg.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, arrSubKeys
For Each subkey In arrSubKeys
'IF subkey = ProductCode Then
'.Run UninstallString, 1, True
'End If
IF subkey = ProductCode Then
oShell.Run "%COMSPEC% /k " & UninstallString, 1, True
End If
Next
Set oShell = Nothing
Set oReg = Nothing
尝试了上面的内容,路径也用双引号进行了trid,但两者都没有用。如果我需要在上面的脚本中更改任何内容,请提供给我。
答案 0 :(得分:0)
您的可执行文件名中包含空格,因此您需要在其周围加上双引号,否则shell对象将尝试运行无法找到的可执行文件Database
。
更改此行:
UninstallString = "Database Upgrade Utility.exe /X" & ProductCode & " /qn" & " /norestart"
进入这个:
UninstallString = """Database Upgrade Utility.exe"" /X" & ProductCode & " /qn /norestart"
另外,请确保Database Upgrade Utility.exe
的路径位于PATH
环境变量中。如果不是,则需要以完整路径运行可执行文件。
UninstallString = """C:\Program Files\ASCO\DatabaseUpgradeUtility\ASCO Database Upgrade Utility.exe"" /X" & ProductCode & " /qn /norestart"
如果不起作用,请检查以下事项:
首先执行Run
语句?像这样更改条件以查看代码是否实际进入Then
分支:
IF subkey = ProductCode Then
WScript.Echo "Subkey check OK."
oShell.Run UninstallString, 1, True
End If
uninstall命令是否返回错误代码?
IF subkey = ProductCode Then
rc = oShell.Run(UninstallString, 1, True)
If rc <> 0 Then WScript.Echo "Command returned with status code " & rc & "."
End If
uninstall命令是否在控制台上产生输出?
IF subkey = ProductCode Then
oShell.Run "%COMSPEC% /k " & UninstallString, 1, True
End If