10
votes

Comment trouver l'emplacement du programme dans le registre, si je connais MSI GUID?

J'ai installé certains MSI avec GUID (0733556C-37E8-4123-A801-D3E6C5151617). Le programme enregistré dans le registre: HKEY_LOCAL_MACHINE \ LOGICIEL \ Microsoft \ Windows \ Courroversion \ Désinstallation \ ()

valeur Désinstallation = Msiexec.exe / I (0733556C-37E8-4123-A801-D3E6C5151617)

Ma question est la suivante: utilitaire msiexec.exe connaît le nom et le chemin du fichier que vous souhaitez exécuter lorsque vous supprimez les programmes? Où dans le registre, ces informations peuvent être trouvées?


2 commentaires

Très bonnes réponses déjà, mais la voie la plus simple pour obtenir des informations sur votre produit installé est probablement Utilisation d'une commande simple PowerShell


Lire à nouveau, je pense que j'ai mal interprété votre question. Je suppose que la réponse réelle à votre question est que toutes les informations sur les produits installés sont stockées dans le registre sous hklm \ logiciel \ Microsoft \ Windows \ CurrentVersion \ installateur . Ceci est La base de données Windows Installer et vous ne devez jamais toucher directement aucune valeur ici. Plutôt, vous pouvez y accéder via Win32 Appels API (C ++) ou vous pouvez utiliser COM Automation (plus facile).


7 Réponses :


0
votes

cette clé de clé de hkey_classes_root \ installateur \ produits \ .


3 commentaires

HKEY_CLASSES_ROOT \ installateur \ produits \ ne comprend pas le programme d'accès au programme installé. Où ca je le trouve?


Il n'a pas besoin du chemin d'accès à l'application installée, que si elle a installé 10 applications?, Tout ce dont il a besoin est le chemin du désinstallateur (ou module .msi). Jetez un coup d'œil à la sortie de "Liste de produits WMIC" à la ligne de commande.


En fait, j'ai besoin de déterminer l'emplacement de l'application (lecteur de disque) afin d'estimer l'espace disque disponible avant d'installer MSP Patch. Puis-je déterminer l'emplacement de l'application installée si je ne connais que GUID dans HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows \ CurrentVersion \ Uninstall \ {}?



16
votes

Windows conserve les informations de configuration de Windows Installer masquées et cryptées dans le registre. Il n'est pas navigable avec l'œil humain comme d'autres parties du registre sont.

Pour interroger / modifier / supprimer ces informations, vous devez utiliser des fonctions MSI.
( Référence de la fonction d'installation )

Pour votre question particulière, essayez la fonction msigetProductiNfo .


2 commentaires

Caché et crypté - vraiment?


Voir TAO de l'installateur Windows, partie 2 à partir de Blog Windows Installer Team . Voir la règle 21: Évitez d'utiliser des données de configuration que vous ne possédez pas. Il est écrit: "Ces données sont gérées par l'installateur et l'accès direct par les utilisateurs ou les applications sont découragées; en fait, certaines des données sont codées pour rendre la manipulation manuelle manuellement."



9
votes

Vous pouvez essayer, à partir de la ligne de commande:

wmic product where "Name like '%your software here%'" get Name, Version, PackageCode


0 commentaires

1
votes

Il existe une utilité gratuite de la recherche logicielle TARMA que j'ai trouvé utile pour cela. Obtenez-le de Licite .


0 commentaires

11
votes

Voici un simple programme C # qui utilise msigetproductinfo, comme William Leara dit, pour obtenir l'emplacement réel de l'installateur mis en cache sur disque. XXX


1 commentaires

Comme on le voit dans l'extrait de code, la chaîne Propriété peut (et doit) omettre InstallProperty _ . Aussi le cas des lettres importe, par ex. Pour InstallProperty_InstallLLocation Il est InstallLocation (comme similaire à localPackage).



3
votes

Vous n'avez pas besoin de logiciel. Cela fonctionne dans Windows 10 et je pense que c'est également valide pour Windows 7.

Si votre code de produit est 0733556C-37E8-4123-A801-D3E6C5151617. Essayez de trouver la clé C65533708E7332148A103D6E5C516171 (Fondamentalement, elle est inversée) une fois que vous l'avez trouvée, parcourez la sous-clé InstallProperties, si elle n'existe pas, essayez de trouver d'autres résultats. Une fois que vous avez trouvé InstallProperties, ouvrez et trouvez la touche localPackage. Et ensuite, vous avez le chemin du package MSI que MSI enregistre comme cache lorsque vous avez installé votre application.


1 commentaires

+1 Excellent conseil. J'ai passé des années à regarder ces sous-revues HKEY_CLASSES_ROOT \ installateur \ Products et n'a jamais reconnu que c'est le même guid cassé dans des sections et inversée. Je n'ai jamais vu cette information ailleurs sur Internet.



1
votes

Le principe de cette question est trompeur car la désinstallation dans le registre n'est pas utilisée lors de la désinstallation. Allez-y et changez la chaîne pour tester cela - il n'utilisera pas votre chaîne modifiée.

Bien que les références à des trucs dans le registre puissent être attrayantes, la réponse courte est que les données Windows Installer dans le registre sont des détails de mise en œuvre. La question pose fondamentalement comment msiconfigureproduct (.... installstate_absent ...) fonctionne, et il est inutile de deviner aux détails de la mise en œuvre et où il pourrait être dans le registre. Ce sont des API tout le long. Il aurait peut-être pu être une tâche réelle que l'affiche a peut-être souhaité accomplir, mais il est masqué par une question de savoir comment traverse les désinstallations.


1 commentaires

Certainement d'accord - il n'est jamais acceptable d'accéder directement aux détails de la base de données MSI, voire d'essayer de le décoder, ce que de nombreuses personnes semblent faire avec des trucs qu'ils trouvent dans le registre.