48 votes

WMI "installé" requête différente de la liste Ajout / Suppression de programmes?

Essayez d'utiliser WMI pour obtenir une liste des programmes installés pour Windows XP. À l'aide de wmic, j'ai essayé:

C:\Documents and Settings\romandas>wmic  
wmic:root\cli>/output:c:\ProgramList.txt product get name,version

et j'obtiens une liste de la plupart des programmes installés, mais après frottement de cette liste à l'encontre de ce "Ajout/suppression de Programmes" s'affiche, je vois beaucoup plus de programmes répertoriés dans l'interface utilisateur d'Ajouter/Supprimer des Programmes que avec la requête WMI. Est-il une autre requête WMI-je utiliser pour obtenir le reste des programmes installés? Ou est-il un autre endroit j'ai besoin de regarder pour le reste?

Aussi, il y a deux installé les programmes qui sont répertoriés dans la requête WMI qui ne sont pas dans Ajout/suppression de programmes. Aucune idée pourquoi?

33voto

Rob Haupt Points 1418

Je crois que votre syntaxe est à l'aide de la Win32_Product Classe WMI. Une des causes est que cette classe n'affiche que les produits installés à l'aide de Windows Installer (Voir Ici). La désinstallation de la clé de registre est votre meilleur pari. Voici un peu de code pour surveiller la clé de registre.

MISE À JOUR POUR LES COMMENTAIRES:

La Désinstallation de la Clé de Registre est la norme de place pour la liste de ce qui est installé et ce qui ne l'est pas installé. Il s'agit de l'emplacement, l'Ajout/suppression de Programmes liste à utiliser pour remplir la liste des applications. Je suis sûr qu'il y a des applications qui ne sont pas eux-mêmes dans ce lieu. Dans ce cas, vous auriez du avoir recours à un autre plus fruste méthode comme la recherche dans le répertoire Program Files ou à la recherche dans les Programmes du Menu Démarrer. Ces deux moyens ne sont certainement pas idéal.

À mon avis, en regardant la clé de registre est la meilleure méthode.

13voto

BobbyShaftoe Points 19925

Tout ce que Ajout / Suppression de programmes est en train de faire, c'est de lire cette clé de registre:

 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall
 

7voto

saalehr Points 51

D'ailleurs le plus connu est la clé de registre pour les programmes installés:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall

commande wmic et l'ajout/suppression de programmes de recherche dans une autre clé de registre:

HKEY_CLASSES_ROOT\Installer\Products

Logiciel nom affiché dans la liste de lecture à partir de la Valeur de l'entrée des Données à l'intérieur de cette clé appelée: ProductName

Retrait de la clé de registre pour un certain produit à partir de deux emplacements ci-dessus va l'empêcher de montrer dans l'ajout/suppression de programmes liste. Ce n'est pas une méthode pour désinstaller des programmes, il suffit de supprimer l'entrée de ce qui est connu sur windows comme logiciel installé.

Depuis, en utilisant cette méthode, vous perdez la chance de l'aide du bouton Supprimer de la liste ajouter/supprimer pour enlever proprement le logiciel de votre système; il est recommandé d'exporter les clés de registre dans un fichier avant de le supprimer. Dans l'avenir, si vous avez décidé d'apporter cet élément à la liste, il vous suffit d'exécuter le fichier de registre que vous avez enregistrées.

5voto

Tyler Collier Points 1917

J'ai été en utilisant Inno Setup pour un installateur. Je suis à l'aide de 64-bit de Windows 7 uniquement. Je trouve que les entrées de registre en cours d'écriture

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall

Je n'ai pas encore compris comment faire cette liste pour être signalé par WMI (bien que le programme est répertorié comme étant installé dans Programmes et Fonctionnalités). Si je l'ai trouver, je vais essayer de me rappeler de rapport ici.

Mise à JOUR:

Les inscriptions pour les programmes 32 bits installé sur une machine 64 bits aller dans ce registre. Il y a de plus écrit ici:

http://mdb-blog.blogspot.com/2010/09/c-check-if-programapplication-is.html

Voir mon commentaire qui décrit 32 bits vs 64 bits comportement dans le même post ici:

http://mdb-blog.blogspot.com/2010/09/c-check-if-programapplication-is.html?showComment=1300402090679#c861009270784046894

Malheureusement, il ne semble pas y avoir moyen de WMI pour la liste de tous les programmes à partir de l'outil ajout/suppression de programmes liste (aka Programmes et Fonctionnalités dans Windows 7, vous ne savez pas à propos de Vista). Mon code actuel a chuté WMI en faveur de l'utilisation de la base de registre. Le code lui-même à interroger le registre est encore plus facile à l'aide de WMI. Exemple de code est dans le lien ci-dessus.

5voto

quantme Points 1417

Pas le meilleur, mais si c'est pratique de la méthode:

L'Utilisation De HijackThis.

Exécuter détourner cela, cliquez sur le bouton "Ouvrir le Misc Tools section" bouton

HijackThis Main Menu

cliquez sur "Ouvrir le Gestionnaire de Désinstallation"

HijackThis Configuration

cliquez sur enregistrer la liste (*.txt), oui à l'invite, le bloc-notes va s'ouvrir avec votre ajout/suppression de programmes liste.

HijackThis Add/Remove Programs Manager


Source

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X