2011-01-17 04:15:36 +0000 2011-01-17 04:15:36 +0000
30
30

Programme stillschweigend über CMD deinstallieren

Gibt es eine Möglichkeit, Programme ohne die grafische Oberfläche zu deinstallieren und dies über CMD zu tun?

Antworten (8)

26
26
26
2014-07-23 21:33:01 +0000

Sie können das richtige Deinstallationsprogramm aufrufen, ohne die GUID usw. zu kennen, indem Sie WMIC verwenden.

Um eine Liste der Namen der Programme zu sehen, wie sie intern von Windows bekannt sind:

wmic product get name

Suchen Sie nach Ihrem Produktnamen. Er stimmt wahrscheinlich mit dem überein, der in der Systemsteuerung “Programme und Funktionen” aufgeführt ist, aber nicht immer.

Dann können Sie

wmic product where name="_my_product_name" call uninstall

verwenden, um die Deinstallation durchzuführen, die AFAIK zufolge geräuschlos sein sollte (meiner Erfahrung nach war sie das, aber probieren Sie es aus, bevor Sie sich darauf verlassen. Die Geräuschlosigkeit kann davon abhängen, wie Ihr Installer/Deinstaller gebaut wurde).

Siehe hier für mehr:

Es gibt auch Referenzdokumentation für WMIC auf microsoft.com.

19
19
19
2011-01-17 05:14:51 +0000

Jedes Programm, das sich ordnungsgemäß nach den Richtlinien von Microsoft installiert, erstellt einen Registrierungseintrag in HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall. Normalerweise ist der Schlüssel für das Programm seine GUID oder der Name des Programms. Innerhalb dieses Schlüssels befindet sich ein Eintrag namens UninstallString. Dieser enthält den auszuführenden Befehl zur Deinstallation des Programms.

Wenn Sie bereits im Voraus wissen, was Sie deinstallieren werden, sollte es einfach sein, dies in Ihre Batch-Datei zu schreiben. Knifflig wird es allerdings, wenn Sie versuchen, diesen Prozess zu automatisieren. Sie können den Befehl reg verwenden, um Daten aus der Registry zu erhalten, aber er gibt eine Menge Text um den tatsächlichen Wert eines bestimmten Schlüssels herum zurück, was die Verwendung erschwert. Vielleicht möchten Sie mit VBscript oder PowerShell experimentieren, da diese bessere Optionen zum Abrufen von Daten aus der Registrierung in eine Variable haben.

7
7
7
2015-12-29 14:56:33 +0000

Wenn Sie PowerShell 3 (oder höher) installiert haben, können Sie einen WMI-Aufruf absetzen, um alle Programme mit einem bestimmten Namen (oder “wie” ein bestimmtes Programm, um Platzhaltersuchen durchzuführen) zu erhalten, und dann die Uninstall-Methode für jedes dieser Programme aufrufen:

(Get-WmiObject -Query "SELECT * FROM Win32_Product WHERE Name like '%Partial Name%'").uninstall()

5
5
5
2011-01-17 04:24:49 +0000

Wenn Sie wissen, wo sich die MSI-Installationsdatei befindet, können Sie dies verwenden:

Msiexec /uninstall Application.msi /quiet

5
5
5
2011-01-17 04:23:12 +0000

Wenn ein Programm Windows Installer verwendet, können Sie einen der folgenden Befehle verwenden:

msiexec /q /x <ProductCodeGuid>
msiexec /q /x <PathToMsi>

Allerdings haben Sie wahrscheinlich weder den Produktcode noch die ursprüngliche MSI-Datei, die für die Installation verwendet wurde.

Abgesehen davon gibt es keinen generischen Deinstallationsbefehl, da Installationsprogramme, die nicht den Windows Installer verwenden, dem Betriebssystem “unbekannt” sind. Sie könnten ihre eigene ausführbare Datei zur Deinstallation bereitstellen, aber ob diese ausführbare Datei eine Möglichkeit enthält, sie ohne GUI auszuführen, hängt vom jeweiligen Softwarepaket ab.

1
1
1
2018-06-30 22:14:12 +0000

Schauen Sie sich dies an, dies ist mit einem Batch den UninstallString-Registrierungsschlüssel der Software finden und dann die Software still und leise deinstallieren, was viel zuverlässiger ist im Vergleich zu wmic Ich fand https://community.spiceworks.com/topic/2143980-deploy-or-upgrade-java-8-via-shutdown-script-remove-old-javas

::It extracts software software GUID, then use the GUID to search the name and version
@echo off
setlocal ENABLEDELAYEDEXPANSION

set SoftwareName=Java 8
set NewVersion=8.0.1720.11
set x86GUID=HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall
set x64GUID=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
set Installer=\dc\sources\jre-8u172-windows-i586.exe REMOVEOUTOFDATEJRES=1 AUTO_UPDATE=0 EULA=0 NOSTARTMENU=1 SPONSORS=0 WEB_ANALYTICS=0 WEB_JAVA=1 WEB_JAVA_SECURITY_LEVEL=H /s
REM set Installer=d:\downloads\jre-8u172-windows-i586.exe REMOVEOUTOFDATEJRES=1 AUTO_UPDATE=0 EULA=0 NOSTARTMENU=1 SPONSORS=0 WEB_ANALYTICS=0 WEB_JAVA=1 WEB_JAVA_SECURITY_LEVEL=H /s

REM It's faster to first locate the software GUID, then search it's Name, Version & UninstallString
for /f "delims=" %%P in ('reg query "%x86GUID%" /s /f "%SoftwareName%" 2^>nul ^| findstr "HKEY_LOCAL_MACHINE"') do (
  echo %%P
  reg query "%%P" /v "DisplayVersion" 2>nul | findstr /r /c:" %NewVersion%" >nul && (
    for /f "tokens=2*" %%A in ('reg query "%%P" /v "DisplayName" 2^>nul ^|findstr "DisplayName"') do echo %%B has already been installed
    for /f "tokens=2*" %%A in ('reg query "%%P" /v "DisplayVersion" 2^>nul ^|findstr "DisplayVersion"') do echo Version: %%B
    goto :EOF
  ) || (
    for /f "tokens=2*" %%A in ('reg query "%%P" /v "DisplayName" 2^>nul ^|findstr "DisplayName"') do echo Found other version %%B, upgrade in progress
    for /f "tokens=2*" %%A in ('reg query "%%P" /v "UninstallString" 2^>nul ^|findstr "UninstallString"') do (
      echo %%B | findstr /c:"MsiExec.exe" >nul && (
        set MsiStr=%%B
        set MsiStr=!MsiStr:/I=/X!
        echo !MsiStr! /quiet /norestart
        !MsiStr! /quiet /norestart
        rem %Installer%
      ) || (
        echo None MsiExec Uninstall String %%B
        rem "%%B" /S
      )
    )
  )
)
if not defined MsiStr (
  echo %SoftwareName% not found, install it?
  rem %Installer%
)

endlocal
1
1
1
2015-03-18 17:36:56 +0000

Ein VBScript-Skript hilft Ihnen bei der Deinstallation des gewünschten Programms.

Um dieses Skript zu verwenden, benötigen Sie den Softwarenamen, der sich in Ihrer Registry befindet.

Geben Sie einfach den Anwendungsnamen in das Skript ein und führen Sie es mit Admin-Rechten aus; es wird die Anwendung deinstallieren. Dies funktioniert jedoch nur bei windowsbasierten Anwendungen; bei eigenständigen Installationen oder Anwendungen, die keinen Eintrag im Deinstallationsstring der Registry haben, funktioniert das Skript nicht.

In diesem Fall müssen Sie also einen anderen Weg finden, um die Anwendung zu deinstallieren.

Code:

On error resume Next

Dim strName, WshShell, oReg, keyname

Const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."

'=============================================
'Change the value here with DisplayName's value
strName = " "
'=============================================
Set WshShell = CreateObject("WScript.Shell")
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
    keyname = ""
       keyname = wshshell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" & subkey & "\DisplayName")
    If keyname = strName then
        i = subkey
    End If
Next

If i Then

    WshShell.Run "MSIEXEC.EXE /X " & i & " /QN", 1, True
End If

Set WshShell = Nothing
set ObjReg = Nothing

WScript.Quit
0
0
0
2017-06-08 01:49:09 +0000

Die korrekte Antwort ist oben, aber für Windows X64-Installationen müssen Sie zusätzlich prüfen:

HKLM\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\