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