Como excluir um aplicativo da caixa de diálogo Abrir com 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 ao usuário especificar o programa usado para abrir o arquivo.

Por padrão, qualquer aplicativo registrado como uma subchave de aplicativos HKEY_CLASSES_ROOT\ é apresentado na caixa de diálogo Abrir com. Esses aplicativos são apresentados em Abrir, 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, o Windows registra essas informações para criar a lista Programas Recomendados . Essa lista é apresentada no submenu Abrir com , conforme mostrado na captura de tela a seguir.

captura de tela do menu de atalho com a abertura com submenu mostrado

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.

captura de tela da caixa de diálogo abrir com programas recomendados

Observação

Se um aplicativo tiver se registrado em 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 para 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 Atalhos do aplicativo por meio do tipo "arrastar e soltar", a menos que o aplicativo esteja especificamente registrado para manipular esse tipo de arquivo.
  • Impede que a caixa de diálogo de arquivo comum e qualquer chamada para a função SHAddToRecentDocs adicione qualquer arquivo à Lista de Atalhos do aplicativo, a menos que o aplicativo esteja especificamente registrado 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 para 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 Atalhos. 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 Atalhos 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 .