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

Programma's in stilte verwijderen via CMD

Advertisement

Is er een manier om programma’s te verwijderen zonder de grafische interface en het via CMD te doen?

Advertisement
Advertisement

Antwoorden (8)

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

U kunt de juiste uninstaller aanroepen zonder de GUID, enz. te kennen door WMIC te gebruiken.

Om een lijst te zien met de namen van de programma’s zoals die intern bij Windows bekend zijn:

wmic product get name

Zoek uw productnaam. Waarschijnlijk komt die overeen met de naam in het configuratiescherm “Programma’s en onderdelen”, maar dat is niet altijd het geval.

Dan kun je

wmic product where name="_my_product_name" call uninstall

gebruiken om de de-installatie uit te voeren, die AFAIK stil zou moeten zijn (mijn ervaring is dat het zo is, maar probeer het voordat je de boerderij daar op verwed. Stilte kan afhangen van hoe uw installer/uninstaller is gebouwd).

Zie hier voor meer:

Er is ook referentiedocumentatie voor WMIC op microsoft.com.

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

Elk programma dat zich correct installeert volgens de richtlijnen van Microsoft maakt een registervermelding in HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall. Meestal zal de sleutel voor het programma zijn GUID zijn, of anders de naam van het programma. Binnen die sleutel zal een entry staan met de naam UninstallString. Dit bevat het commando dat moet worden uitgevoerd om het programma te verwijderen.

Als je van tevoren al weet wat je gaat de-installeren, zou het eenvoudig genoeg moeten zijn om dat in je batchbestand te zetten. Het wordt echter lastig als je dat proces probeert te automatiseren. Je kunt het reg commando gebruiken om gegevens uit het register te halen, maar het geeft een heleboel tekst terug rond de werkelijke waarde van een bepaalde sleutel, waardoor het moeilijk te gebruiken is. Je zou kunnen experimenteren met VBscript of PowerShell, omdat die betere opties hebben om gegevens uit het register in een variabele te krijgen.

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

Als je PowerShell 3 (of hoger) geïnstalleerd hebt, kun je een WMI-aanroep doen om alle programma’s te krijgen die een bepaald ding heten (of ‘zoals’ een bepaald ding, om wildcard-zoekopdrachten uit te voeren), en dan voor elk van hen de Uninstall methode aanroepen:

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

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

Als je weet waar het MSI installatiebestand staat kun je gebruiken:

Msiexec /uninstall Application.msi /quiet

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

Als een programma Windows Installer gebruikt, kun je een van de volgende commando’s gebruiken:

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

Waarschijnlijk heb je echter noch de productcode, noch het originele MSI-bestand dat voor de installatie is gebruikt.

Verder is er geen generiek de-installatie commando, omdat installateurs die geen gebruik maken van Windows Installer “onbekend” zijn bij het besturingssysteem. Ze kunnen hun eigen uninstall executable meeleveren, maar of die executable een manier bevat om het zonder GUI uit te voeren hangt af van het individuele softwarepakket.

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

Kijk hier eens naar, dit is met behulp van een batch te vinden van de software UninstallString registersleutel en vervolgens te verwijderen van de software in stilte die veel betrouwbaarder in vergelijking met wmic Ik vond 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
Advertisement
1
1
2015-03-18 17:36:56 +0000
Advertisement

Een VBScript script zal je helpen om het benodigde programma te verwijderen.

Om dit script te gebruiken heb je de naam van de software nodig die in je register staat.

Voer gewoon de naam van de applicatie in het script in en voer het uit met admin rechten; het zal de applicatie verwijderen. Maar dit werkt alleen voor een window-gebaseerde applicatie; voor standalone setup of apps die geen entry maken in de uninstall string van het register, zal het script niet werken.

Dus in dat geval zul je een andere manier moeten vinden om de applicatie te verwijderen.

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

Het juiste antwoord staat hierboven, maar voor Windows X64 installaties moet u ook controleren:

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

Gerelateerde vragen

3
19
10
28
6
Advertisement
Advertisement