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:
- Localizando um aplicativo executável
- Registo de candidaturas
- Registrando verbos e outras informações de associação de arquivos
- Registrando um tipo percebido
- Tópicos relacionados
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:
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
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