Dans le quotidien d’un administrateur système, il arrive souvent de devoir dépanner, cloner ou réinstaller un serveur hébergeant une application métier déployée plusieurs années auparavant. Problème récurrent : la documentation fait défaut et personne dans l’équipe ne sait sur quel partage réseau ou support amovible se trouvent les fichiers d’installation originaux.
Heureusement, lorsque l’application a été installée à l’aide d’un installeur Windows (paquet MSI ou exécutable encapsulé), le système conserve un historique complet des chemins utilisés.
Méthode 1 : Explorer la base de registre
Windows conserve une trace des packages MSI enregistrés sous une clé dédiée de la base de registre. Vous pouvez y accéder directement avec regedit :
- Ouvrez l’utilitaire d’exécution (Touche Windows + R) et lancez regedit.
- Naviguez jusqu’au chemin suivant : HKEY_CLASSES_ROOT\Installer\Products.
- Cette arborescence contient une liste de clés aux identifiants alphanumériques complexes (GUID modifiés).
- Cliquez sur les différentes clés : le volet de droite affiche la valeur ProductName, ce qui permet d’identifier l’application recherchée.
- Une fois la bonne clé trouvée, développez le sous-dossier SourceList.
- La valeur chaîne nommée LastUsedSource indique l’emplacement exact d’où a été exécuté le programme d’installation (chemin UNC vers un partage, dossier local ou lecteur réseau).
Si l’installation a été réalisée pour la machine complète par le compte Système, vous trouverez également ces informations sous HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products.
Méthode 2 : Automatiser la recherche en PowerShell
Si vous devez auditer plusieurs machines distantes ou si vous préférez éviter de fouiller manuellement des dizaines de GUIDs, PowerShell permet d’extraire rapidement ces chemins de source :
Get-ChildItem -Path ‘HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products’ | ForEach-Object {
$appName = (Get-ItemProperty -Path « $($_.PSPath)\InstallProperties » -ErrorAction SilentlyContinue).DisplayName
$source = (Get-ItemProperty -Path « $($_.PSPath)\SourceList » -ErrorAction SilentlyContinue).LastUsedSource
if ($appName) {
[PSCustomObject]@{ Application = $appName; Source = $source }
}
} | Where-Object { $_.Application -match « NomDuLogiciel » }
Cette commande filtre directement l’inventaire Windows Installer sans solliciter les classes WMI lourdes, évitant ainsi les ralentissements inutiles sur vos postes de travail.
Pourquoi cette information est-elle précieuse ?
Identifier la source réseau d’origine permet non seulement de récupérer les installeurs pour d’autres postes, mais aussi de résoudre des échecs de désinstallation. En effet, un MSI requiert souvent son package source initial pour supprimer proprement un composant. Lors du déploiement massif de correctifs, notamment lorsqu’on gère des outils comme pour mettre à jour un logiciel par GPO, s’assurer de la disponibilité de ce partage source évite bien des erreurs d’exécution.
Si le poste client n’arrive plus à joindre ce chemin réseau lors d’une mise à jour programmée par stratégie de groupe, n’hésitez pas à vérifier vos journaux avec nos astuces de debug GPO client pour confirmer si le refus d’accès provient d’un partage déplacé ou d’un droit de lecture manquant.
