«правильный» и надежный способ получить все установленные программы Windows в Python?

Я видел множество способов получения установленных программ на WinXP + в python. Каков правильный и самый надежный способ сделать это?

В настоящее время я обращаюсь к HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall и прочитайте каждый из ключей оттуда, чтобы получить список. (Мне сказали, что это не правильный способ делать что-то). Я видел примеры использования WMI / Win32com для этого, но видел комментарии вместе с теми реализациями, которые WMI может быть отключен на определенных машинах и что это не очень надежное решение.

Есть ли метод, который является правильным и надежным для получения списка установленных программ? Ни один из примеров WMI, которые я видел, не работал на этой машине (следовательно, мое нежелание использовать его, я использую только WinFLP, что является удаленным вариантом XP).

Кажется, я также нашел статью TechNet, в которой были обнаружены мои поисковые запросы, которые предоставляются аналогичному ответу на мой вопрос: http://gallery.technet.microsoft.com/ScriptCenter/en-us/154dcae0-57a1-4c6e- 8f9f-b215904485b7 Обратите внимание, что Vista / 7, перечисленные в разделе «Платформы», очень четко говорит «Нет» … не будет работать. Таким образом, сделка WMI выглядит так, будто она не работает …

Возможность получить установленный путь также будет иметь потенциал роста, так как сейчас мой текущий код не учитывает установку на другом диске или в каталоге, отличном от стандартного.

2 Solutions collect form web for “«правильный» и надежный способ получить все установленные программы Windows в Python?”

Сценарий технологов, на который вы ссылаетесь, отлично работает под Win 7 (с Python 2.5 32bits), и я действительно не понимаю, почему это не должно.

Фактически, реальная слабость подхода WMI заключается в том, что он отображает только продукты, установленные через установщик Windows. Так что это не даст вам полный список. Многие программы используют разные установщики. Просто сравните результаты между (Select * from Win32_Product) и тем, что отображается на панели управления. Таким образом, если вы не уверены, что программа, которая пересекает вас в вашем списке, установлена ​​с MSI, WMI определенно не является ответом.

Так что это может быть не очень pythonic, но, насколько мне известно, лучший способ – использовать реестр, как вы это делали. На самом деле это работает с панелью управления, поэтому, по крайней мере, Windows считает, что это самый надежный способ сделать это.

WMI – это правильный способ поиска установленных программ, поскольку он будет работать в разных версиях ОС и будет поддерживаться в будущем. Поиск определенных regkeys может отлично работать для определенных версий Windows, но не гарантированно будет работать в будущем. Вот простой код python для проверки Box Sync, который я только что пробовал в Windows 7. Обратите внимание, что не все поля будут доступны для каждого продукта, поэтому имейте в виду, что они будут «Нет».

 import wmi w = wmi.WMI() for p in w.Win32_Product(): if 'Box, Inc.' == p.Vendor and p.Caption and 'Box Sync' in p.Caption: print 'Installed {}'.format(p.Version) 

Недостаток, который я видел с WMI, очень медленно запускается.

  • Python ImportError: нет модуля с именем wmi
  • Python - функция не может запускаться в новом потоке
  • Существует ли способ, с помощью которого я могу использовать классы WMI в java
  • Как контролировать активное окно на удаленном ПК
  • Python - получить значения датчиков и скорости вращения вентиляторов - Windows 10
  • как получить серийный номер драйвера жесткого диска в python
  • Получить температуру процессора в python на окнах
  •  
    Interesting Posts for Van-Lav

    twitter / facebook комментарии классификация по различным категориям

    Может ли кто-нибудь объяснить, почему эта сортировка не будет работать?

    python .rstrip удаляет один дополнительный символ

    Работает scipy.integrate.ode.set_solout?

    Идентификатор Joblib при попытке кэширования результатов

    В scikit узнать, как обрабатывать данные, смешанные с численным и номинальным значением?

    Как найти скрытые файлы внутри файлов изображений (Jpg / Gif / Png)

    pip: пакет обновления без обновления конкретной зависимости

    Selenium: Почему мой метод get_cookies () вернул список в Python?

    scrapy Таймаут пользователя вызвал сбой подключения

    Создал словарь, но некоторые пары ключевых значений, кажется, отсутствуют или не передают

    Ошибка сегментирования случайного лесного классификатора

    Как сделать список из raw_input в python?

    pip не может подтвердить сертификат SSL: модуль SSL недоступен

    Уменьшить доступ к отдельным элементам, чем для списков

    Python - лучший язык программирования в мире.