'richtige' & zuverlässige Weg, um alle installierten windows-Programme in Python?
Ich habe gesehen, zahlreiche Möglichkeiten zum abrufen von installierten Programmen auf WinXP+ in python. Was ist die richtige und robustesten Weg, dies zu tun?
Ich habe derzeit Zugriff auf HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall
und Lesen jede der Tasten von dort erhalten Sie eine Liste. (Ich habe gesagt, das ist nicht der richtige Weg, Dinge zu tun) ich habe schon Beispiele gesehen, mit WMI/Win32com, dies zu tun als gut, aber gesehen haben Kommentare zusammen mit den Implementierungen, die WMI möglicherweise deaktiviert werden, auf bestimmte Maschinen sind, und dass es nicht eine sehr zuverlässige Lösung.
Gibt es eine Methode, die eine ordnungsgemäße und zuverlässige ein, um eine Liste der installierten Programme? Keiner der WMI-Beispiele, die ich gesehen habe, haben auf diese Maschine (daher meine Abneigung, es zu benutzen, ich bin nur ausgeführt WinFLP; das ist eine abgespeckte vers. von XP.)
Scheine ich auch gefunden zu haben in dem TechNet-Artikel was meine Recherchen haben aufgedeckt, die zu einer ähnlichen Antwort auf meine Frage: http://gallery.technet.microsoft.com/ScriptCenter/en-us/154dcae0-57a1-4c6e-8f9f-b215904485b7 Beachten Sie, dass Vista/7 zu finden unter Plattformen sehr deutlich sagt: "Nope"...wird nicht funktionieren. Also die WMI-Angebot scheint, wie es ist ein no-go...
Abrufen zu können, die installierten Pfad wäre ein Pluspunkt, wie auch jetzt meine aktuelle code nicht für jemanden, der die Installation auf einem anderen Laufwerk oder in einem nicht-Standard-Verzeichnis.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Technet script beziehen Sie sich auf perfekt funktioniert unter Win 7 (mit Python 2.5 32-bit), und ich kann wirklich nicht sehen, warum es nicht sollte.
Eigentlich die wirkliche Schwäche der WMI-Methode ist, dass Sie nur Listen-Produkte installiert, die über den Windows Installer. So ist es nicht geben Ihnen die volle Liste. Viele Programme verwenden verschiedene Installateure. Vergleichen Sie einfach die Ergebnisse zwischen den (Select * from Win32-Produkt) und was wird angezeigt in der Systemsteuerung. So, es sei denn, Sie sind sicher, dass das Programm, das interset Sie in Ihrer Liste mit der installierten MSI, WMI ist definitiv nicht eine Antwort.
So kann es nicht sehr pythonic, aber der beste Weg, soweit ich weiß, ist Sie die Registrierung verwenden, wie Sie getan haben. Dies ist tatsächlich, wie das control panel arbeitet, also mindestens Windows ist der Auffassung, dass es der stabilste Weg, es zu tun.
WMI ist der richtige Weg zu suchen, die installierten Programme, als es Arbeit wird auf verschiedene Versionen des OS und unterstützt werden, die Zukunft. Auf der Suche nach bestimmten regkeys kann funktionieren für bestimmte Windows-Versionen, ist aber nicht garantiert, um zu arbeiten in der Zukunft. Hier ist einige einfache python-code zu überprüfen, für Box Sync, die ich habe gerade versucht unter Windows 7. Beachten Sie, dass nicht alle Felder werden für jedes Produkt, so bewusst sein, diese werden mit "None".
Den Nachteil, die ich gesehen habe mit WMI ist, es ist sehr langsam zu starten.
wmic product get Caption