Как исключить приложение из диалогового окна "Открыть с помощью" для несвязанных типов файлов
Когда пользователь пытается открыть файл, который не является членом любого зарегистрированного типа файла (то есть неизвестный тип файла), или когда пользователь выбирает Открыть с помощью или Открыть с помощью -> выбрать программу по умолчанию из контекстного меню файла, оболочка представляет подменю или диалоговое окно, позволяющее пользователю указать программу, используемую для открытия файла.
По умолчанию любое приложение, зарегистрированное в качестве подключа HKEY_CLASSES_ROOT\Applications, отображается в диалоговом окне Открыть с помощью. Эти приложения представлены в Open с независимо от того, зарегистрировано ли приложение для обработки типа файла.
Чтобы предотвратить отображение приложения в диалоговом окне Открыть с помощью, если приложение не должно или не может использоваться для открытия определенных типов файлов, используйте один из двух методов, описанных в этом разделе.
Инструкции
Шаг 1.
Добавьте запись NoOpenWith в подраздел приложения. Если приложение использует тип файла, Windows записывает эти сведения для создания списка рекомендуемых программ. Этот список представлен в Open с помощью подменю, как показано на следующем снимке экрана.
Эти рекомендуемые приложения также отображаются в части Рекомендуемые программы диалогового окна Открыть с помощью, как показано на следующем снимке экрана.
Заметка
Если приложение зарегистрировалось в OpenWithList или OpenWithProgIDs для типа файла, оно появится в списке Рекомендуемые программы даже если установлена запись NoOpenWith. Кроме того, помните, что независимо от того, предлагается ли приложение в списке рекомендуемых программ, пользователь может вручную перейти к любому исполняемому файлу.
Приложения могут отключить это отслеживание, указав значение NoOpenWith в подразделе приложения.
Запись NoOpenWith является пустым значением REG_SZ, как показано в следующем примере.
HKEY_CLASSES_ROOT
Applications
MyProgram.exe
NoOpenWith
Настройка записи NoOpenWith также имеет следующие эффекты:
- Запрещает закрепление файла в списке переходов приложения с помощью перетаскивания, если приложение не зарегистрировано для обработки этого типа файла.
- Запрещает обычному диалоговому окну файла и любому вызову функции shAddToRecentDocs добавлять любой файл в список переходов приложения, если приложение не зарегистрировано для обработки этого типа файла.
Шаг 2.
Второй способ предотвратить появление приложения в диалоговом окне Открыть с помощью — использовать вложенный раздел SupportedTypes для явного перечисления расширений типов файлов, которые может открыть приложение. Это предотвращает отображение приложения в диалоговом окне Открыть с помощью диалогового окна для типов файлов, которые он не может открыть. Это также приводит к отображению приложения в списке рекомендуемых программ, как описано ранее.
Этот метод особенно полезен, если приложение может сохранить файл в виде определенного типа файла, но не может открыть этот тип файла. Приложение также должно задать флаг FOS_DONTADDTORECENT через IFileDialog::SetOptions при вызове диалогового окна "Сохранить". Это предотвращает добавление элемента в разделы последних или частых списка переходов. Он также предотвращает отслеживание приложения под OpenWithList.
Каждое поддерживаемое расширение добавляется записью в подразделе "Поддерживаемые Типы", как показано в следующем примере. Записи имеют тип REG_SZ или REG_NULLбез связанных значений.
HKEY_CLASSES_ROOT
Applications
ApplicationName
SupportedTypes
.ext1
.ext2
.ext3
Если предоставляется вложенный ключ SupportedTypes, то только файлы с этими расширениями могут быть закреплены в Jump List приложения или отслеживаться в списке назначений приложения, таких как Недавние или Часто используемые.
Запись NoOpenWith переопределяет подраздел SupportedTypes и скрывает приложение в диалоговом окне Открыть с помощью.