Como excluir um aplicativo da caixa abrir com caixa de diálogo para tipos de arquivo não associados

Quando um usuário tenta abrir um arquivo que não é membro de nenhum tipo de arquivo registrado (ou seja, um tipo de arquivo desconhecido) ou quando um usuário seleciona Abrir com ou Abrir com -> Escolha o programa padrão no menu de atalho de um arquivo, o Shell apresenta um submenu ou caixa de diálogo que permite que o usuário especifique o programa usado para abrir o arquivo.

Por padrão, qualquer aplicativo registrado como uma subchave de HKEY_CLASSES_ROOT\Applications é apresentado na caixa de diálogo Abrir com. Esses aplicativos são apresentados no Open, independentemente de o aplicativo estar registrado para manipular o tipo de arquivo.

Para impedir que um aplicativo apareça na caixa de diálogo Abrir com quando o aplicativo não deve ou não pode ser usado para abrir determinados tipos de arquivo, use uma das duas técnicas descritas neste tópico.

Instruções

Etapa 1:

Adicione uma entrada NoOpenWith à subchave do aplicativo. Quando um aplicativo usa um tipo de arquivo, Windows registra essas informações para criar a lista Programas Recomendados. Essa lista é apresentada no Open com submenu, conforme mostrado na captura de tela a seguir.

screen shot of shortcut menu with the open with submenu shown

Esses aplicativos recomendados também são mostrados na parte Programas Recomendados da caixa de diálogo Abrir com , conforme mostrado na captura de tela a seguir.

screen shot of the open with dialog box with recommended programs

Observação

Se um aplicativo tiver se registrado no OpenWithList ou OpenWithProgIDs para o tipo de arquivo, ele aparecerá na lista Programas Recomendados mesmo se a entrada NoOpenWith estiver definida. Além disso, lembre-se de que, independentemente de um aplicativo ser oferecido em uma lista de programas recomendados, um usuário pode navegar manualmente até qualquer arquivo executável.

 

Os aplicativos podem desabilitar esse acompanhamento especificando um valor NoOpenWith na subchave do aplicativo.

A entrada NoOpenWith é um valor REG_SZ vazio, conforme mostrado no exemplo a seguir.

HKEY_CLASSES_ROOT
   Applications
      MyProgram.exe
         NoOpenWith

Definir a entrada NoOpenWith também tem estes efeitos:

  • Impede a fixação de um arquivo na Lista de Saltos do aplicativo por meio de arrastar e soltar, a menos que o aplicativo esteja registrado especificamente para manipular esse tipo de arquivo.
  • Impede que a caixa de diálogo de arquivo comum e qualquer chamada à função SHAddToRecentDocs adicione qualquer arquivo à Lista de Saltos do aplicativo, a menos que o aplicativo esteja registrado especificamente para manipular esse tipo de arquivo.

Etapa 2:

A segunda maneira de impedir que um aplicativo apareça na caixa de diálogo Abrir com é usar a subchave SupportedTypes para listar explicitamente as extensões de tipos de arquivo que o aplicativo pode abrir. Isso impede que o aplicativo apareça na caixa de diálogo Abrir com os tipos de arquivo que ele não pode abrir. Isso também faz com que o aplicativo apareça na lista Programas Recomendados , conforme discutido anteriormente.

Esse método é particularmente útil se um aplicativo puder salvar um arquivo como um determinado tipo de arquivo, mas não puder abrir esse tipo de arquivo. Um aplicativo também deve definir o sinalizador FOS_DONTADDTORECENT por meio de IFileDialog::SetOptions ao chamar a caixa de diálogo Salvar . Isso impede que o item seja adicionado às partes recentes ou frequentes de uma Lista de Saltos. Ele também impede que o aplicativo seja rastreado em OpenWithList.

Cada extensão com suporte é adicionada como uma entrada na subchave SupportedTypes , conforme mostrado no exemplo a seguir. As entradas são do tipo REG_SZ ou REG_NULL, sem valores associados.

HKEY_CLASSES_ROOT
   Applications
      ApplicationName
         SupportedTypes
            .ext1
            .ext2
            .ext3

Se uma subchave SupportedTypes for fornecida, somente os arquivos com essas extensões serão qualificados para fixar na Lista de Saltos do aplicativo ou por serem rastreados na lista de destinos recentes ou frequentes de um aplicativo.

A entrada NoOpenWith substitui a subchave SupportedTypes e oculta o aplicativo na caixa de diálogo Abrir com .