Désinstallation silencieuse des programmes via CMD

Est-ce que je peux désinstaller des programmes sans l'interface graphique et le faire via CMD?

Chaque programme qui se installe correctement conformément aux directives de Microsoft crée une entrée de registre dans HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall . Habituellement, la clé pour le programme sera son GUID, ou bien le nom du programme. Dans cette clé sera une entrée intitulée UninstallString . Cela contient la commande à exécuter pour désinstaller le programme.

Si vous savez déjà à l'avance ce que vous désinstallez, il devrait être assez facile de simplement le mettre dans votre fichier batch. Il devient délicat quand vous essayez d'automatiser ce processus. Vous pouvez utiliser la commande reg pour obtenir des données du registre, mais il renvoie beaucoup de texte autour de la valeur réelle d'une clé donnée, ce qui rend difficile l'utilisation. Vous voudrez peut-être expérimenter avec VBscript ou PowerShell, car ils ont de meilleures options pour obtenir des données du registre dans une variable.

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

Pour voir une liste des noms des programmes connus en interne par Windows:

 wmic product get name 

Recherchez le nom de votre produit. Cela correspond probablement à celui indiqué 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, AFAIK doit être silencieux (il a été 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 plus d'informations:

  • WMIC: le meilleur outil de ligne de commande que vous n'avez jamais utilisé (aperçu de WMIC avec beaucoup de commandes intéressantes décrites)
  • Windows: désinstallez une application à partir de la ligne de commande (la recette spécifique)

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

Si vous savez où le fichier d'installation MSI, vous pouvez utiliser:

Msiexec / désinstaller Application.msi / quiet

Si vous avez PowerShell 3 (ou supérieur) installé, vous pouvez émettre un appel WMI pour que tous les programmes soient nommés une certaine chose (ou «comme» une certaine chose, faire des recherches de caractères génériques), puis appeler la méthode de Uninstall pour chacun d'eux :

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

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

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

Cependant, il est probable que vous n'avez ni le code produit ni le fichier MSI d'origine utilisé pour l'installation.

À part cela, il n'y a pas de commande de désinstallation générique, car les installateurs qui ne font pas usage de Windows Installer sont «inconnus» par le système d'exploitation. Ils peuvent fournir leur propre exécutable de désinstallation, mais si cet exécutable comprend un moyen de l'exécuter sans interface graphique dépend du logiciel individuel.

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.

Entrez simplement le nom de l'application dans le script et exécutez-le avec les privilèges d'administrateur; Il va désinstaller l'application. Mais cela ne fonctionnera que pour une application basée sur les fenêtres; Pour une configuration autonome ou des applications qui ne font pas une entrée dans la chaîne de désinstallation du registre, le script ne fonctionnera pas.

Donc, dans ce cas, vous devrez trouver une autre façon 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 

La réponse correcte est ci-dessus, mais pour les installations Windows X64, vous devrez également vérifier:

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