Я создаю своего рода приложение каталога файлов, и для одного из его применений я хотел бы получить список всех установленных в настоящее время приложений, способных открывать файлы с расширением выбранного в данный момент файла. Итак, скажем, у меня выбран файл .docx , приложение будет перечислять такие приложения, как MS Word, OpenOffice, LibreOffice. Как бы я получить такой список на Mac и Windows?

2 ответа2

1

Для 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 выполняет всю эту работу.)

(Или же)

Откройте "Программы по умолчанию"> "Установить программы по умолчанию". Выберите программу в списке и нажмите "выбрать значения по умолчанию для этой программы". Здесь перечислены типы файлов, которые может обрабатывать программа. Сделайте это для каждого приложения в списке.

0

Для Mac есть еще один вопрос / ответ здесь на SuperUser, который, кажется, решает это: возможно ли запросить базу данных служб запуска для приложений, которые откроют произвольный файл или тип UTI?

Хитрость, кажется, заключается в том, чтобы сначала получить "UTI" (вроде mimetype), а затем искать приложения, которые могут открыть его с помощью duti.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .