Comment obtenir les applications installées dans le système en utilisant le code c #?
Réponses
Trop de publicités?Une itération dans la clé de registre "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" semble donner une liste exhaustive des applications installées.
Hormis l'exemple ci-dessous, vous pouvez trouver une version à l'aide de Linq ici et une version similaire à ce que j'ai fait ici.
C'est un exemple grossier, vous aurez probaby voulez faire quelque chose de supprimer les lignes vides comme dans le 2ème lien fourni.
string registry_key = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";
using(Microsoft.Win32.RegistryKey key = Registry.LocalMachine.OpenSubKey(registry_key))
{
foreach(string subkey_name in key.GetSubKeyNames())
{
using(RegistryKey subkey = key.OpenSubKey(subkey_name))
{
Console.WriteLine(subkey.GetValue("DisplayName"));
}
}
}
Alternativement, vous pouvez utiliser WMI comme il a été mentionné:
ManagementObjectSearcher mos = new ManagementObjectSearcher("SELECT * FROM Win32_Product");
foreach(ManagementObject mo in mos.Get())
{
Console.WriteLine(mo["Name"]);
}
Mais c'est plutôt plus lent à s'exécuter, et j'ai entendu dire qu'il ne peut la liste des programmes installés sous "ALLUSERS", bien que peut-être incorrect. Il ignore également les composants de Windows et de mises à jour, ce qui peut être pratique pour vous.
Vous pouvez jeter un oeil à cet article . Il utilise le registre pour lire la liste des applications installées.
public void GetInstalledApps()
{
string uninstallKey = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";
using (RegistryKey rk = Registry.LocalMachine.OpenSubKey(uninstallKey))
{
foreach (string skName in rk.GetSubKeyNames())
{
using (RegistryKey sk = rk.OpenSubKey(skName))
{
try
{
lstInstalled.Items.Add(sk.GetValue("DisplayName"));
}
catch (Exception ex)
{ }
}
}
}
}
Voici un code complet pour rechercher une application installée ou un programme. 100% fonctionnent sur les systèmes 32 et 64 bits !!!
http://mdb-blog.blogspot.com/2010/12/c-check-if-programapplication-is.html
Pourrais-je vous suggérer de prendre un coup d'oeil à WMI (Windows Management Instrumentation). Si vous ajoutez le Système.De référence de la gestion de votre projet C#, vous bénéficiez de l'accès à la classe `ManagementObjectSearcher", qui vous aurez probablement trouver utile.
Il existe différentes Classes WMI pour les Applications Installées, mais si il a été installé avec Windows Installer, puis le Win32_Product classe est probablement le mieux adapté pour vous.
ManagementObjectSearcher s = new ManagementObjectSearcher("SELECT * FROM Win32_Product");