2009-10-21 6 views
2

En utilisant C# .NET 2.0 ou supérieur et Visual Studio 2008, comment générer une liste de toutes les applications installées sur un PC Windows Vista? Ma motivation est d'obtenir un fichier texte de toutes mes applications installées que je peux sauvegarder et conserver afin que lorsque je reconstruis ma machine, j'ai une liste de toutes mes anciennes applications.En C# .NET 2.0 ou supérieur, comment obtenir la liste de toutes les applications installées sur Vista PC

La deuxième partie de cette question est une sorte de chose SuperUser.com, mais j'espère que la première partie compte comme "programmation".

Merci

Répondre

5

Vous pouvez regarder dans le référencement SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall clé de Registre. Consultez ces liens:

http://www.onedotnetway.com/get-a-list-of-installed-applications-using-linq-and-c/ http://social.msdn.microsoft.com/forums/en-US/netfxbcl/thread/ac23690a-f5f8-46fc-9047-c369f4370fac

+0

Bien sûr, cela ne renverra qu'une liste d'applications répertoriées dans le registre. Les applications déployées via le déploiement XCOPY n'apparaîtront pas. – pmarflee

+0

Oui, potentiellement toutes les applications d'Adam apparaîtront dans le registre, car elles pourraient être des applications qui ont été copiées sur le disque plutôt qu'installées. –

+0

Merci. Règles StackOverflow! –

1

Voir the source code of this library

foreach(var info in BlackFox.Win32.UninstallInformations.Informations.GetInformations()) 
{ 
    Console.WriteLine(info.ToString()); 
} 
0

Il faut aussi tenir compte des différents niveaux de installedness.

  • Une application a peut-être fait l'objet de modifications (supprimées, etc.) depuis son installation.
  • Certaines applications ne s'installent pas, mais fonctionnent plutôt comme des binaires nus.
2

Le follwing vous permettra de télécharger les applications installées pour tous les utilisateurs. Faites la même chose pour Registry.CurrentUser ainsi:

RegistryKey uninstall = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"); 
    List<string> applicationList = new List<string>(); 
    foreach (string subKeyName in uninstall.GetSubKeyNames()) 
    { 
     RegistryKey subKey = uninstall.OpenSubKey(subKeyName); 
     string applicationName = subKey.GetValue("DisplayName", String.Empty).ToString(); 
     if (!String.IsNullOrEmpty(applicationName)) 
     { 
      applicationList.Add(applicationName); 
     } 
     subKey.Close(); 
    } 

    uninstall.Close(); 

    applicationList.Sort(); 

    foreach (string name in applicationList) 
    { 
     Console.WriteLine(name);  
    } 

AVERTISSEMENT: Il n'y a pas de valeur null/contrôle d'erreur dans mon exemple!

Questions connexes