Désinstaller un produit complètement

8 mars 2020

Panneau de configuration

La première des choses pour supprimer un logiciel est le panneau de configuration :

Puis désinstaller le produit voulu, par exemple Zorg.

Fichiers

Il faut supprimer le résidu des fichiers.

Registres

Au niveau des registres, il y a plusieurs niveaux à vérifier

Clé Uninstall

Les entrées dans cette clé vont supprimer le produit du panneau de configuration s’il persiste encore. Il faut aller dans :

Machine 64 bits : [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\

Windows\CurrentVersion\Uninstall]

Machine 32 bits: [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\

Windows\CurrentVersion\Uninstall]

Si la liste de guids est longue, vous pouvez faire une recherche du produit dans la liste des clés à gauche.

Supprimer la clé trouvée complètement. Vous trouverez à droite

Il se peut que vous trouviez une clé de la forme InstallShield_{GUID}, il faut la supprimer aussi.

Clé Installer

Products

Parcourir les GUID à gauche jusqu’à tomber sur le produit recherché en fonction de l’installation en cours (Works, PharmaX, Zorg, AfterWave…), dans le cas de Zorg il faut faire la recherche sur Zorg.

Upgrade Codes

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\UpgradeCodes]

Il faut ensuite supprimer les UpgradeCodes, mais là il faut chercher le GUID dans les valeurs (à droite) et non dans les clés (à gauche)

Features

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Features]

Dans les Features, il faut recherche GUID du produit noté dans l’étape précédente. Si la recherche prend trop de temps car il y a trop d’entrées, faites un export puis faire la recherche dans le Notepad.

Shared

En exécutant une fenêtre PowerShell en mode Administrateur.

Collez le script suivant :

$productName = "\Inabex\Zorg" 
$components = Get-ChildItem -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Components\
 $count = 0
 Write-Output $productName
 foreach ($c in $components) 
 {
 foreach($p in $c.Property) {     $propValue = (Get-ItemProperty "Registry::$($c.Name)" -Name "$($p)")."$($p)"     if ($propValue -match $productName)      {         Write-Output $propValue         $count++         Remove-Item "Registry::$($c.Name)" -Recurse     } }
 }
 Write-Host "$($count) key(s) removed"

Veillez à changer au niveau du script le nom du produit puis de lancer le script en cliquant sur le bouton: