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

Désinstallation de programmes en silence via la CMD

Y a-t-il un moyen de désinstaller des programmes sans l'interface graphique et de le faire via CMD ?

Réponses (8)

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

Vous pouvez invoquer le bon désinstallateur sans connaître le GUID, etc. en utilisant le WMIC.

Pour voir la liste des noms des programmes tels qu'ils sont connus en interne par Windows :

wmic product get name

Cherchez le nom de votre produit. Il correspond probablement à celui qui figure dans le panneau de configuration “Programmes et fonctionnalités”, mais pas toujours.

Ensuite, vous pouvez utiliser

wmic product where name="_my_product_name" call uninstall

pour effectuer la désinstallation, que l'AFAIK devrait taire (cela a été le cas dans mon expérience, mais essayez avant de parier la ferme sur cela. Le silence peut dépendre de la façon dont votre installateur/désinstallateur a été construit).

Voir ici pour en savoir plus :

Il existe également une documentation de référence pour WMIC sur microsoft.com.

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

Tout programme qui s'installe correctement selon les directives de Microsoft fait une entrée dans le registre en HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall. Habituellement, la clé du programme sera son GUID, ou bien le nom du programme. Dans cette clé, il y aura une entrée appelée UninstallString. Celle-ci contient la commande à exécuter pour désinstaller le programme.

Si vous savez déjà à l'avance ce que vous allez désinstaller, il devrait être assez facile de le mettre dans votre fichier de commandes. Mais cela devient difficile lorsque vous essayez d'automatiser ce processus. Vous pouvez utiliser la commande reg pour obtenir des données du registre, mais elle renvoie beaucoup de texte autour de la valeur réelle d'une clé donnée, ce qui la rend difficile à utiliser. Vous voudrez peut-être essayer d'utiliser VBscript ou PowerShell, car ils offrent de meilleures options pour obtenir des données du registre dans une variable.

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

Si vous avez installé PowerShell 3 (ou supérieur), vous pouvez lancer un appel WMI pour que tous les programmes soient nommés d'une certaine manière (ou “aiment” une certaine manière, pour faire des recherches avec des jokers), puis lancer la méthode Uninstall pour chacun d'entre eux :

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

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

Si vous savez où se trouve le fichier d'installation de MSI, vous pouvez l'utiliser :

Msiexec /uninstall Application.msi /quiet

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

Si un programme utilise Windows Installer, vous pouvez utiliser l'une des commandes suivantes :

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

Cependant, vous n'avez probablement ni le code du produit ni le fichier MSI original utilisé pour l'installation.

A part cela, il n'y a pas de commande de désinstallation générique, car les installateurs qui n'utilisent pas Windows Installer sont “inconnus” du système d'exploitation. Ils peuvent fournir leur propre exécutable de désinstallation, mais le fait que cet exécutable comprenne un moyen de l'exécuter sans interface graphique dépend de chaque logiciel.

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

Regardez ça, c'est en utilisant un lot : trouvez la clé de registre UninstallString du logiciel et ensuite désinstallez le logiciel silencieusement, ce qui est beaucoup plus fiable que wmic J'ai trouvé 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

Un script VBScript vous aidera à désinstaller le programme requis.

Pour utiliser ce script, vous aurez besoin du nom du logiciel qui se trouve dans votre registre.

Il suffit d'entrer le nom de l'application dans le script et de l'exécuter avec les privilèges d'administrateur ; cela désinstallera l'application. Mais cela ne fonctionnera que pour une application basée sur une fenêtre ; pour une installation autonome ou des applications qui ne font pas d'entrée dans la chaîne de désinstallation du registre, le script ne fonctionnera pas.

Dans ce cas, vous devrez trouver un autre moyen de désinstaller l'application.

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

La bonne réponse se trouve ci-dessus, mais pour les installations de Windows X64, vous devrez également vérifier :

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