Vérifiez si l'application est installée dans le registre
Maintenant je l'utilise pour la liste de toutes les applications répertoriées dans la base de registre pour 32bit & 64.
J'ai vu d'autres exemples de la façon de vérifier si une application est installée sans aucune chance.
string registryKey = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";
RegistryKey key = Registry.LocalMachine.OpenSubKey(registryKey);
if (key != null)
{
foreach (String a in key.GetSubKeyNames())
{
RegistryKey subkey = key.OpenSubKey(a);
Console.WriteLine(subkey.GetValue("DisplayName"));
}
}
registryKey = @"SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall";
key = Registry.LocalMachine.OpenSubKey(registryKey);
if (key != null)
{
foreach (String a in key.GetSubKeyNames())
{
RegistryKey subkey = key.OpenSubKey(a);
Console.WriteLine(subkey.GetValue("DisplayName"));
}
}
Donc cet extrait de la liste des tous les dans la fenêtre de la console et ce que je suis en train de faire est de
il suffit de trouver un titre du programme de la liste des noms d'affichage pour voir si il est installé.
La dernière chose que j'ai essayé était
if (subkey.Name.Contains("OpenSSL"))
Console.Writeline("OpenSSL Found");
else
Console.Writeline("OpenSSL Not Found");
Rien j'ai essayé revint faux ou un faux positif. Est-ce que quelqu'un peut me montrer comment il suffit de saisir un titre de la liste?
Merci de ne pas poster le bien-connu private static void IsApplicationInstalled(p_name) de la fonction. Il ne fonctionne pas pour moi.
Close()
la regkeys vous avez Opened()
'd.. même si c'est du code managé, ce sont des ressources non managées et la fuite si vous n'avez pas les fermer.Merci pour le PTI.
Cela sonne comme il pourrait être très utile. Toutefois, selon ce que vous voulez l'utiliser, vous pourriez être mieux de l'adaptation de la est installé le code de l'application spécifique pour le faire fonctionner plus rapidement.
Aussi, pas tous les programmes sont enregistrés dans l'option "désinstaller". Juste pour info.
OriginalL'auteur Faded | 2013-05-04
Vous devez vous connecter pour publier un commentaire.
Après la recherche et de dépannage, j'ai eu à travailler de cette façon:
Et simplement, je viens de l'appeler à l'aide
À l'époque, ce code a été seulement de vérifier si les applications installées avec des noms de dossier
OriginalL'auteur Faded
C'est un moyen propre de faire cela sans que la quantité de code.
L'appeler avec un if:
OriginalL'auteur Stellan Lindell
J'ai vérifié @Stellan Lindell du code et ça ne fonctionne pas dans chaque cas.
Ma version fonctionne avec tous les scénario et de vérifier la version spécifique des programmes installés(x86, x64).
OriginalL'auteur Mroczny Arturek
Solutions ci-dessus sont très bons, mais parfois, vous avez pour vérifier si le produit est installé sur une autre machine. Donc, il y a une version basée sur les solutions ci-dessus à partir de @Stellan Lindell et @Mroczny Arturek
Cette méthode fonctionne bien pour la machine locale et également à distance de la machine...
Le registre version est seulement l'une des deux options standard.. une Autre option est l'utilisation de WMI, mais le registre est beaucoup mieux en raison de la performance, afin de prendre WMI seulement comme une alternative.
Il est mon SelectStringsFromWMI méthode, mais vous pouvez le faire sur votre propre, ce n'est pas la partie importante de cette solution. Mais si vous êtes interessé, ça y est...
!!Mise à JOUR!!
En raison de vraiment de mauvaise performance, il y a une autre amélioration. Juste obtenir les valeurs async..
Et la SearchSubKeysForValue méthode (peut être construit comme une extension de la méthode):
mais vous pouvez utiliser cette solution pour la machine locale et même à distance de la machine, donc oui, c'est une solution pour votre réponse avec quelques améliorations. Donc, je ne comprends pas le downvote.
peut-être que vous apprécierez cette mise à jour amélioration plus ... 🙂
OriginalL'auteur Blaato