Как отфильтровать установленное программное обеспечение, чтобы в строке поиска Windows отображались только приложенияPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как отфильтровать установленное программное обеспечение, чтобы в строке поиска Windows отображались только приложения

Сообщение Anonymous »

У меня есть скрипт Python, который выводит список всего установленного программного обеспечения, читая его из реестра Windows. Он извлекает данные из HKEY_LOCAL_MACHINE и HKEY_CURRENT_USER в разделе SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall. Однако в результате получается список, включающий системные приложения, библиотеки и компоненты, такие как «Распространяемые файлы Microsoft Visual C++» и «Среда выполнения WebView», которые не отображаются в строке поиска Windows.
Цель:
Я хочу изменить свой скрипт, чтобы он показывал только те приложения, которые появляются в строке поиска Windows при вводе имени приложения. Это должно исключать внутренние системные компоненты и службы, с которыми пользователи не взаимодействуют напрямую.
Я пробовал фильтровать по определенным ключевым словам, но этот подход неполный. Есть ли способ проверить, зарегистрировано ли установленное приложение для отображения в меню «Пуск» или в поиске Windows? Возможно, проверив ярлык меню «Пуск» или другой индикатор?
Вот базовый сценарий, который я использую для получения данных программного обеспечения:

Код: Выделить всё

import winreg

def foo(hive, flag):
aReg = winreg.ConnectRegistry(None, hive)
aKey = winreg.OpenKey(aReg, r"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall", 0, winreg.KEY_READ | flag)

count_subkey = winreg.QueryInfoKey(aKey)[0]
software_list = []

for i in range(count_subkey):
software = {}
try:
asubkey_name = winreg.EnumKey(aKey, i)
asubkey = winreg.OpenKey(aKey, asubkey_name)
software['name'] = winreg.QueryValueEx(asubkey, "DisplayName")[0]

try:
software['version'] = winreg.QueryValueEx(asubkey, "DisplayVersion")[0]
except EnvironmentError:
software['version'] = 'undefined'
try:
software['publisher'] = winreg.QueryValueEx(asubkey, "Publisher")[0]
except EnvironmentError:
software['publisher'] = 'undefined'
software_list.append(software)
except EnvironmentError:
continue

return software_list

software_list = foo(winreg.HKEY_LOCAL_MACHINE, winreg.KEY_WOW64_32KEY) + foo(winreg.HKEY_LOCAL_MACHINE, winreg.KEY_WOW64_64KEY) + foo(winreg.HKEY_CURRENT_USER, 0)

for software in software_list:
print('Name=%s, Version=%s, Publisher=%s' % (software['name'], software['version'], software['publisher']))

Код: Выделить всё

•   Filtering out system apps by checking for certain keywords (like Microsoft Visual C++, Redistributable, etc.), but this is not a reliable method.
•   Searching for a way to check if an app has a Start Menu shortcut, but I’m unsure how to integrate that into my script.
О чем я спрашиваю:

Код: Выделить всё

•   Is there a reliable way to filter the software to only show those apps that are user-facing and searchable via the Start Menu or Windows search bar?
•   Can this be done by checking for a Start Menu shortcut or other registration in the system?
Будем очень признательны за любые рекомендации или указатели на правильный API или метод!

Подробнее здесь: https://stackoverflow.com/questions/790 ... search-bar
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»