Как исключить приложение из диалогового окна "Открыть с помощью" для несвязанных типов файлов

Когда пользователь пытается открыть файл, который не является членом какого-либо зарегистрированного типа файла (то есть неизвестного типа файла), или когда пользователь выбирает команду "Открыть с помощью" или "Открыть с помощью".> Выберите программу по умолчанию в контекстном меню файла, оболочка представляет подменю или диалоговое окно, позволяющее пользователю указать программу, используемую для открытия файла.

По умолчанию любое приложение, зарегистрированное в качестве подраздела HKEY_CLASSES_ROOT\Applications, отображается в диалоговом окне "Открыть с помощью". Эти приложения представлены в Open независимо от того, зарегистрировано ли приложение для обработки типа файла.

Чтобы предотвратить появление приложения в диалоговом окне "Открыть с помощью диалогового окна", если приложение не должно использоваться для открытия определенных типов файлов, используйте один из двух способов, описанных в этом разделе.

Инструкции

Шаг 1.

Добавьте запись NoOpenWith в подраздел приложения. Если приложение использует тип файла, Windows записывает эти сведения для создания списка рекомендуемых программ. Этот список представлен в меню "Открыть с подменю", как показано на следующем снимке экрана.

screen shot of shortcut menu with the open with submenu shown

Эти рекомендуемые приложения также отображаются в разделе "Рекомендуемые программы " диалогового окна "Открыть с помощью", как показано на следующем снимке экрана.

screen shot of the open with dialog box with recommended programs

Примечание

Если приложение зарегистрировано в 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 и скрывает приложение в диалоговом окне "Открыть с помощью".