Как вы уже упоминали, список (правильно) установленных программ можно найти в реестре под ключом
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
См., Например, здесь или используйте Google для получения дополнительной информации.Посмотрите на этот ключ, используя regedit
, идентификатор структуры совершенно очевиден.
Чтобы получить доступ к реестру с помощью python, см. _winreg - Доступ к реестру Windows в документации стандартной библиотеки python.
Обратите внимание, что всегда может быть программное обеспечение, которое не отображается в реестре: некоторые программы все еще можно установить, просто поместив их в каталог, и вы не поймаете этих парней ...
Во второй части невозможно сообщить типу лицензии или статусу лицензии (т.е. правильно лицензированному) при просмотре реестра.Не существует стандартного способа хранения этой информации.Лучшее, что вы можете сделать, - это составить список как можно большего количества программ (вам придется делать это вручную, это займет много времени даже для стандартных программ, таких как Office, Adobe и т. Д.) И хранить всю необходимую информацию.(т. е. ключ GUID в реестре, тип лицензии и т. д.) в базе данных.
Затем ваш инструмент может сравнить список установленных программ с вашим списком, возможно, проверив состояние лицензирования.Это будет еще сложнее в качестве первого шага, поскольку у каждого программного обеспечения есть свой собственный (в основном секретный!) Способ хранения этого - в конце концов, если эта информация доступна, ее также можно подделать.
Тогда ваш инструмент сможет сообщить системному администратору о своих выводах и о любых программах, которых нет в списке, ему придется вручную проверить лицензирование для них.Вы можете предоставить некоторую организационную помощь для управления этой информацией и, возможно, даже обновить базу данных для будущего использования.
HTH
Martin