Bonjour,
Je souhaite récupérer la liste des applications installées sur des postes distant. Cependant, il y a une contrainte, je dois interroger des postes qui peuvent être 32 ou 64 bits. Et souvent même, sur des 64 bits, certaines applications sont installées en 32 bits (au niveau de la clé uninstall).
Je parcours les postes via ce code :
Seulement, ça ne me retourne pas toutes les applications (il manque celles qui sont dans la ruche Wow6432Node...).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 private void GetInstalledApps(string hostname, CancellationToken ct) { RegistryKey regKey = RegistryKey.OpenRemoteBaseKey( RegistryHive.LocalMachine, hostname).OpenSubKey( "SOFTWARE").OpenSubKey("Microsoft").OpenSubKey("Windows").OpenSubKey("CurrentVersion").OpenSubKey("Uninstall"); string[] keys = regKey.GetSubKeyNames(); foreach (var key in keys) { RegistryKey productKey = regKey.OpenSubKey(key); name = Convert.ToString(productKey.GetValue("DisplayName")); if (name != string.Empty) { version = Convert.ToString(productKey.GetValue("DisplayVersion")); publisher = Convert.ToString(productKey.GetValue("Publisher")); installLocation = Convert.ToString(productKey.GetValue("InstallLocation")); packageCode = Convert.ToString(key); aList.Add(new AInfos() { Name = name, Version = version, Publisher = publisher, InstallLocation = installLocation, PackageCode = packageCode }); } } }
J'ai essayer de parcourir les 2 ruches simultanément, mais dans ce cas là, j'obtiens une liste beaucoup trop longue, avec pas mal de doublons, etc...
La méthode par requête WMI ne me convient pas, car elle met beaucoup trop de temps a retourner un résultat.
Comment pourrais-je faire pour obtenir une liste précise des applications sur des postes à distance donc, en tenant compte des contraintes que j'ai cité ci-dessus ? Je bloque un peu là.
Merci par avance.
Partager