Uninstall a Program or Patch
Die automatische Deinstallation per Script ist etwas unschön über die WUAPI gelöst.
Mein Script ermittelt in der Registry das gesuchte KB-Patch oder Programm und startet dann die Deinstallation:
- uninstallProg.vbs
Const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
suche = "KB2509470" 'hier das gesuchte Programm eingeben
strOriginalKeyPath = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\"
Dim WSHShell
Set WSHShell = WScript.CreateObject("WScript.Shell")
FindKeyValue(strOriginalKeyPath)
'-------------------------------------------------------------------------
Function FindKeyValue(strKeyPath)
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")
errorCheck = oReg.EnumKey(HKEY_LOCAL_MACHINE, strKeyPath, arrSubKeys)
If (errorCheck=0 and IsArray(arrSubKeys)) THEN
For Each subkey In arrSubKeys
strNewKeyPath = strKeyPath & "\" & subkey
FindKeyValue(strNewKeyPath)
Next
End If
oReg.EnumValues HKEY_LOCAL_MACHINE, strKeyPath,arrValueNames, arrValueTypes
IF (errorCheck=0 and IsArray(arrValueNames)) THEN
For i=0 To UBound(arrValueNames)
IF arrValueNames(i) = "DisplayName" THEN
strValueName = arrValueNames(i)
oReg.GetStringValue HKEY_LOCAL_MACHINE, strKeyPath, strValueName, szValue
IF InStr(szValue,suche) THEN
wscript.echo "Displayname: " & szValue
strValueName2 = "UninstallString"
oReg.GetStringValue HKEY_LOCAL_MACHINE, strKeyPath, strValueName2, szValue2
wscript.echo "Deinstallation durch:" & vbCRLF & szValue2
WSHShell.Run szValue2, 1, FALSE
End IF
END IF
Next
End if
end Function
'-------------------------------------------------------------------------
Sollte man einen Fehler bekommen:
WindowsInstaller
Das Entfernen von Patches wird durch eine Richtlinie nicht zugelassen.
so hat man mal wieder keine Adminrechte.
oder so:
wusa /uninstall /kb:3097877 /quiet /forcerestart