Я создаю своего рода приложение каталога файлов, и для одного из его применений я хотел бы получить список всех установленных в настоящее время приложений, способных открывать файлы с расширением выбранного в данный момент файла. Итак, скажем, у меня выбран файл .docx
, приложение будет перечислять такие приложения, как MS Word, OpenOffice, LibreOffice.
Как бы я получить такой список на Mac и Windows?
2 ответа
Для Windows: простого способа нет, но можно написать сценарий для перечисления возможностей каждого зарегистрированного приложения. Список официальных / зарегистрированных приложений хранится в следующих двух разделах реестра:
HKEY_CURRENT_USER\ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ \ RegisteredApplications HKEY_LOCAL_MACHINE \ SOFTWARE \ RegisteredApplications
Универсальные веб-приложения, кажется, регистрируют записи в расположении № 1 выше.
На правой панели перечислены все приложения, зарегистрированные в пользовательском интерфейсе "Программы по умолчанию" в Windows.
Например, Firefox добавляет туда запись с данными о значении, упоминаемыми как:
Software\Clients\StartMenuInternet\ Firefox.exe \ Возможности
Таким образом, вышеуказанное расположение в HKCU или HKLM содержит информацию о том, какие типы файлов и протоколы может обрабатывать программа.
Перейдите в папку: HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet\FIREFOX.EXE\ Возможности
Существует подраздел "FileAssociations", который определяет список типов файлов, которые он может обрабатывать, и упоминает ProgID, которые будут использоваться для каждого типа файлов.
Можно написать сценарий, который перечисляет каждое зарегистрированное приложение, а затем перечисляет каждый тип файла, который он может обработать.
(Примечание. Диалоговое окно "Открыть с помощью" в Windows выполняет всю эту работу.)
(Или же)
Откройте "Программы по умолчанию"> "Установить программы по умолчанию". Выберите программу в списке и нажмите "выбрать значения по умолчанию для этой программы". Здесь перечислены типы файлов, которые может обрабатывать программа. Сделайте это для каждого приложения в списке.
Для Mac есть еще один вопрос / ответ здесь на SuperUser, который, кажется, решает это: возможно ли запросить базу данных служб запуска для приложений, которые откроют произвольный файл или тип UTI?
Хитрость, кажется, заключается в том, чтобы сначала получить "UTI" (вроде mimetype), а затем искать приложения, которые могут открыть его с помощью duti.