Partilhar via


Registo de Candidaturas

Este tópico discute como os aplicativos podem expor informações sobre si mesmas necessárias para habilitar determinados cenários. Isso inclui as informações necessárias para localizar o aplicativo, os verbos que o aplicativo suporta e os tipos de arquivos que um aplicativo pode manipular.

Este tópico está organizado da seguinte forma:

Observação

Os aplicativos também podem ser registrados nos aplicativos do painel de controle Definir acesso a programas e padrões do computador (SPAD) e Definir seus programas padrão (SYDP). Para obter informações sobre o registro de aplicativos SPAD e SYDP, consulte Diretrizes para associações de arquivos e programas padrãoe Definir acesso a programas e padrões do computador (SPAD).

Localizando um executável de aplicativo

Quando a função ShellExecuteEx é chamada com o nome de um arquivo executável em seu parâmetro lpFile, há vários lugares onde a função procura o arquivo. Recomendamos registrar seu aplicativo na subchave do Registro Caminhos de Aplicativo. Isso evita a necessidade de os aplicativos modificarem a variável de ambiente PATH do sistema.

O arquivo é procurado nos seguintes locais:

  • O diretório de trabalho atual.
  • O diretório Windows (nenhum subdiretório é pesquisado).
  • O diretório Windows\System32.
  • Diretórios listados na variável de ambiente PATH.
  • Recomendado: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths

Registo de Candidaturas

As subchaves App Paths e Applications registry são usadas para registrar e controlar o comportamento do sistema em nome dos aplicativos. A subchave App Paths é a localização preferida.

Usando a subchave Caminhos do aplicativo

No Windows 7 e versões posteriores, recomendamos vivamente que instale aplicações por utilizador em vez de por máquina. Um aplicativo instalado por usuário pode ser registrado em Software HKEY_CURRENT_USER\\Microsoft\Windows\CurrentVersion\App Paths. Um aplicativo instalado para todos os usuários do computador pode ser registrado em HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\App Paths.

As entradas encontradas em Caminhos de Aplicativo são usadas principalmente para os seguintes fins:

  • Para mapear o nome do arquivo executável de um aplicativo para o caminho totalmente qualificado desse arquivo.
  • Para pré-pender informações para a variável de ambiente PATH em uma base por aplicativo, por processo.

Se o nome de uma subchave de App Paths corresponder ao nome do arquivo, o Shell executará duas ações:

  • A entrada (Padrão) é usada como o caminho totalmente qualificado do arquivo.
  • A entrada Path para essa subchave é pré-anexada à variável de ambiente PATH desse processo. Se isso não for necessário, o valor Path poderá ser omitido.

Os potenciais problemas a ter em conta incluem:

  • O Shell limita o comprimento de uma linha de comando a MAX_PATH * 2 caracteres. Se houver muitos arquivos listados como entradas do Registro ou seus caminhos forem longos, os nomes de arquivo mais adiante na lista poderão ser perdidos à medida que a linha de comando for truncada.
  • Alguns aplicativos não aceitam vários nomes de arquivo em uma linha de comando.
  • Alguns aplicativos que aceitam vários nomes de arquivo não reconhecem o formato no qual o Shell os fornece. O Shell fornece a lista de parâmetros como uma cadeia de caracteres entre aspas, mas alguns aplicativos podem exigir cadeias de caracteres sem aspas.
  • Nem todos os itens que podem ser arrastados fazem parte do sistema de arquivos; por exemplo, impressoras. Esses itens não têm um caminho Win32 padrão, portanto, não há nenhuma maneira de fornecer um valor de lpParameters significativo para ShellExecuteEx.

O uso da entrada DropTarget evita esses possíveis problemas, fornecendo acesso a todos os formatos da área de transferência, incluindo CFSTR_SHELLIDLIST (para listas de arquivos longas) e CFSTR_FILECONTENTS (para objetos que não são do sistema de arquivos).

Para registrar e controlar o comportamento de seus aplicativos com a subchave Caminhos de aplicativo:

  1. Adicione uma subchave com o mesmo nome do arquivo executável à subchave App Paths, conforme mostrado na seguinte entrada do Registro.

    HKEY_LOCAL_MACHINE or HKEY_CURRENT_USER
       SOFTWARE
          Microsoft
             Windows
                CurrentVersion
                   App Paths
                      file.exe
                         (Default)
                         DontUseDesktopChangeRouter
                         DropTarget
                         Path
                         UseUrl
    
  2. Consulte a tabela a seguir para obter detalhes das entradas de subchave Caminhos de Aplicativo.

Entrada de registo Detalhes
(Padrão) É o caminho totalmente qualificado para o aplicativo. O nome do aplicativo fornecido na entrada (padrão) pode ser declarado com ou sem sua extensão .exe. Se necessário, a funçãoShellExecuteEx adiciona a extensão ao pesquisar subchave Caminhos de Aplicativo. A entrada é do tipo REG_SZ.
DontUseDesktopChangeRouter É obrigatório para aplicativos depuradores para evitar bloqueios de diálogo de arquivo ao depurar o processo do Windows Explorer. No entanto, definir a entrada DontUseDesktopChangeRouter produz um tratamento um pouco menos eficiente das notificações de alteração. A entrada é do tipo REG_DWORD e o valor é 0x1.
DropTarget É um identificador de classe (CLSID). A entrada DropTarget contém o CLSID de um objeto (geralmente um servidor local em vez de um servidor em processo) que implementa IDropTarget. Por padrão, quando o destino de descarte é um arquivo executável e nenhum valor DropTarget é fornecido, o Shell converte a lista de arquivos descartados em um parâmetro de linha de comando e a passa para ShellExecuteEx através lpParameters.
Caminho Fornece uma cadeia de caracteres (na forma de uma lista de diretórios separados por ponto-e-vírgula) para acrescentar à variável de ambiente PATH quando um aplicativo é iniciado chamando ShellExecuteEx. É o caminho totalmente qualificado para a .exe. É de REG_SZ. No Windows 7 e versões posteriores, o tipo pode ser REG_EXPAND_SZe é comumente REG_EXPAND_SZ %ProgramFiles%. Nota: Além das entradas (Padrão), Path e DropTarget reconhecidas pelo Shell, um aplicativo também pode adicionar valores personalizados à subchave Caminhos de Aplicativo de seu arquivo executável. Incentivamos os desenvolvedores de aplicativos a usar a subchave Caminhos de Aplicativo para fornecer um caminho específico do aplicativo em vez de fazer adições ao caminho do sistema global.
SupportedProtocols Cria uma cadeia de caracteres que contém os esquemas de protocolo de URL para uma determinada chave. Isso pode conter vários valores do Registro para indicar quais esquemas são suportados. Esta cadeia de caracteres segue o formato de scheme1:scheme2. Se essa lista não estiver vazia, arquivo: será adicionado à cadeia de caracteres. Este protocolo é implicitamente suportado quando SupportedProtocols é definida.
UseUrl Indica que seu aplicativo pode aceitar uma URL (em vez de um nome de arquivo) na linha de comando. Aplicativos que podem abrir documentos diretamente da internet, como navegadores da Web e players de mídia, devem definir essa entrada.
Quando a funçãoShellExecuteEx inicia um aplicativo e o valor UseUrl=1 não está definido, ShellExecuteEx baixa o documento para um arquivo local e invoca o manipulador na cópia local.
Por exemplo, se o aplicativo tiver essa entrada definida e um usuário clicar com o botão direito do mouse em um arquivo armazenado em um servidor web, o verbo Abrir será disponibilizado. Caso contrário, o usuário terá que baixar o arquivo e abrir a cópia local.
A entrada UseUrl é do tipo REG_DWORD e o valor é 0x1.
No Windows Vista e anteriores, essa entrada indicava que a URL deveria ser passada para o aplicativo junto com um nome de arquivo local, quando chamada via ShellExecuteEx. No Windows 7, indica que o aplicativo pode entender qualquer url http ou https que é passada para ele, sem ter que fornecer o nome do arquivo de cache também. Essa chave do Registro está associada à chave SupportedProtocols.

Usando a subchave Aplicativos

Através da inclusão de entradas do Registro na subchave\ApplicationName.exe Aplicativos HKEY_CLASSES_ROOT\, os aplicativos podem fornecer as informações específicas do aplicativo mostradas na tabela a seguir.

Entrada de registo Descrição
shell\verbo Fornece o método verbo para chamar o aplicativo de OpenWith. Sem uma definição de verbo especificada aqui, o sistema assume que o aplicativo suporta CreateProcesse passa o nome do arquivo na linha de comando. Essa funcionalidade se aplica a todos os métodos verbais, incluindo DropTarget, ExecuteCommand e Dynamic Data Exchange (DDE).
DefaultIcon Permite que um aplicativo forneça um ícone específico para representar o aplicativo em vez do primeiro ícone armazenado no arquivo .exe.
FriendlyAppName Fornece uma maneira de obter um nome localizável para exibir para um aplicativo em vez de apenas as informações de versão aparecendo, que podem não ser localizáveis. A consulta de associação ASSOCSTR lê esse valor de entrada do Registro e retorna para usar o nome FileDescription nas informações de versão. Se esse nome estiver ausente, a consulta de associação assumirá como padrão o nome para exibição do arquivo. Os aplicativos devem usar ASSOCSTR_FRIENDLYAPPNAME para recuperar essas informações para obter o comportamento adequado.
SupportedTypes Lista os tipos de arquivo que o aplicativo suporta. Isso permite que o aplicativo seja listado no menu em cascata da caixa de diálogo Abrir com.
NoOpenCom Indica que nenhum aplicativo é especificado para abrir esse tipo de arquivo. Esteja ciente de que, se uma subchave OpenWithProgIDs tiver sido definida para um aplicativo por tipo de arquivo, e a própria subchave ProgID não tiver também uma entrada NoOpenWith, esse aplicativo aparecerá na lista de aplicativos recomendados ou disponíveis, mesmo que tenha especificado a entrada NoOpenWith. Para obter mais informações, consulte Como incluir um aplicativo na caixa de diálogo Abrir com e Como excluir um aplicativo da caixa de diálogo Abrir com.
IsHostApp Indica que o processo é um processo de host, como Rundll32.exe ou Dllhost.exe, e não deve ser considerado para fixação ou inclusão no menu Iniciar na lista MFU (Most Frequently Used). Quando iniciado com um atalho que contém uma lista de argumentos não nulos ou um explícitoApplication User Model IDs (AppUserModelIDs), o processo pode ser fixado (como esse atalho). Tais atalhos são candidatos à inclusão na lista do MFU.
NoStartPage Indica que o executável do aplicativo e os atalhos devem ser excluídos do menu Iniciar e da fixação ou inclusão na lista MFU. Esta entrada é normalmente usada para excluir ferramentas do sistema, instaladores e desinstaladores e arquivos readme.
UseExecutableForTaskbarGroupIcon Faz com que a barra de tarefas use o ícone padrão deste executável se não houver nenhum atalho fixável para este aplicativo e em vez do ícone da janela que foi encontrada pela primeira vez.
TaskbarGroupIcon Especifica o ícone usado para substituir o ícone da barra de tarefas. O ícone da janela é normalmente usado para a barra de tarefas. Definir a entrada TaskbarGroupIcon faz com que o sistema use o ícone do .exe para o aplicativo.

Exemplos

Seguem-se alguns exemplos de registos de aplicações através da subchave\ApplicationName.exeHKEY_CLASSES_ROOT\Aplicações. Todos os valores de entrada do Registro são de REG_SZ tipo, com exceção de DefaultIcon que é de REG_EXPAND_SZ tipo.

HKEY_CLASSES_ROOT
   Applications
      wordpad.exe
         FriendlyAppName = @%SystemRoot%\System32\shell32.dll,-22069
HKEY_CLASSES_ROOT
   Applications
      wmplayer.exe
         SupportedTypes
            .3gp2
HKEY_CLASSES_ROOT
   Applications
      wmplayer.exe
         DefaultIcon
            (Default) = %SystemRoot%\system32\wmploc.dll,-730
HKEY_CLASSES_ROOT
   Applications
      WScript.exe
         NoOpenWith
HKEY_CLASSES_ROOT
   Applications
      photoviewer.dll
         shell
            open
               DropTarget
                  Clsid = {FFE2A43C-56B9-4bf5-9A79-CC6D4285608A}
HKEY_CLASSES_ROOT
   Applications
      mspaint.exe
         SupportedTypes
            .bmp
            .dib
            .rle
            .jpg
            .jpeg
            .jpe
            .jfif
            .gif
            .emf
            .wmf
            .tif
            .tiff
            .png
            .ico

Registrando verbos e outras informações de associação de arquivos

As subchaves registradas em HKEY_CLASSES_ROOT\SystemFileAssociations permitem que o Shell defina o comportamento padrão de atributos para tipos de arquivo e habilite associações de arquivos compartilhados. Quando os usuários alteram o aplicativo padrão para um tipo de arquivo, o ProgID do novo aplicativo padrão tem prioridade no fornecimento de verbos e outras informações de associação. Esta prioridade deve-se ao facto de ser a primeira entrada na matriz de associação. Se o programa padrão for alterado, as informações sob o ProgID anterior não estarão mais disponíveis.

Para lidar proativamente com as consequências de uma alteração nos programas padrão, você pode usar HKEY_CLASSES_ROOT\SystemFileAssociations para registrar verbos e outras informações de associação. Devido à sua localização após o ProgID na matriz de associação, esses registros são de menor prioridade. Esses SystemFileAssociationsregistrations são estáveis mesmo quando os usuários alteram os programas padrão e fornecem um local para registrar verbos secundários que sempre estarão disponíveis para um determinado tipo de arquivo. Para obter um exemplo de registro, consulte Registrando um tipo percebido mais adiante neste tópico.

O exemplo do Registro a seguir mostra o que acontece quando o usuário executa o item Programas Padrão no Painel de Controle para alterar o padrão para arquivos .mp3 para App2ProgID. Depois de alterar o padrão, Verb1 não está mais disponível, e Verb2 se torna o padrão.

HKEY_CLASSES_ROOT
   .mp3
      (Default) = App1ProgID
HKEY_CLASSES_ROOT
   App1ProgID
      shell
         Verb1
HKEY_CLASSES_ROOT
   App2ProgID
      shell
         Verb2

Registrando um tipo percebido

Os valores do Registro para tipos percebidos são definidos como subchaves do HKEY_CLASSES_ROOT\SystemFileAssociations subchave do Registro. Por exemplo, o tipo percebido de texto é registrado da seguinte maneira:

HKEY_CLASSES_ROOT
   SystemFileAssociations
      text
         shell
            edit
               command
                  (Default) = "%SystemRoot%\system32\NOTEPAD.EXE" "%1"
            open
               command
                  (Default) = "%SystemRoot%\system32\NOTEPAD.EXE" "%1"

O tipo percebido de um tipo de arquivo é indicado pela inclusão de um valor PerceivedType na subchave do tipo de arquivo. O valor PerceivedType é definido como o nome do tipo percebido registrado em HKEY_CLASSES_ROOT\SystemFileAssociations subchave do Registro, conforme mostrado no exemplo de registro anterior. Para declarar .cpp arquivos como sendo do tipo percebido "texto", por exemplo, adicione a seguinte entrada do Registro:

HKEY_CLASSES_ROOT
   .cpp
      PerceivedType = text

Tipos de arquivo

Como funcionam as associações de arquivos

Visualização de conteúdo por tipo de arquivo ou tipo

Verificador de Tipo de Arquivo

manipuladores de tipo de arquivo

Identificadores programáticos

Tipos percebidos

Matrizes de Associação