2015-06-30 4 views
4

Когда вы нажимаете правую кнопку на изображении с помощью «Мой компьютер», Windows отображает список установленных приложений, связанных с этим типом файла «OPEN with ...» как получить тот же список программ с использованием WinAPi и создания функции на языке C++показать список установленных приложений

+0

Я предлагаю вам найти сайт MSDN или, возможно, попросить его. Интересный вопрос. –

ответ

0

Меню «Открыть с ...» находится в разделе реестра: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts, оттуда вы можете загрузить create some functions для извлечения данных. MSDN имеет множество функций реестра для получения/установки значений, а также для перемещения деревьев.

Поскольку это не тривиальный бит кода (много ошибок проверки, которое нужно выполнить), и я не буду предполагать, чтобы знать, что ваши полные потребности, я оставлю реализацию вам попробовать и сделайте сначала (затем вернитесь к SO, если у вас есть вопросы по вашей реализации).

Надеюсь, что это поможет.

+0

Я уверен, что это неверно. Например, он пропускает эквивалентный ключ «HKLM». Я также подозреваю, что это не документированный/стабильный API. – MSalters

+0

@MSalters 'подозревают, что это не документированный/стабильный API'? Что вы имеете в виду именно? API MSDN? – txtechhelp

+0

Да, это идея. Вам нужен API, который задокументирован в MSDN, но не тот, для которого MSDN говорит, что он (или может) уйдет в будущих версиях Windows или будет отмечен экспериментальным и т. Д. – MSalters

1

MSDN утверждает, что «По умолчанию любое приложение зарегистрировано в качестве подраздела HKEY_CLASSES_ROOT\Applications представлен в Open с диалогового окна.».

Однако два исключения перечислены: A NoOpenWith подключ (пустая REG_SZ) удаляет приложение из Открыть с помощью диалога. A SupportedTypes ключ со списком расширений ограничивает приложение только соответствием Открыть с диалогами.

Обратите внимание, что HKCR является виртуальным кустом, образованным путем слияния соответствующих частей HKCU и HKLM.

Смежные вопросы