Criar um conector de pesquisa para um manipulador de protocolo

O Windows Explorer controla a criação de um conector de pesquisa para um manipulador de protocolo por meio de entradas de chave do Registro. Por meio do Registro, implementadores e terceiros podem permitir que manipuladores de protocolos novos e herdados participem da Pesquisa do Windows 7.

Este tópico é organizado da seguinte maneira:

Sobre conectores de pesquisa para manipuladores de protocolo no Windows 7

No Windows 7, as pesquisas no menu Iniciar ou no Windows Explorer incluem apenas arquivos em locais indexados e itens que não são do sistema de arquivos, como armazenamentos de dados remotos ou itens de manipulador de protocolo que têm um conector de pesquisa. Além de incluir os itens do manipulador de protocolo no escopo das pesquisas do menu Iniciar e do Shell, o conector de pesquisa permite que o menu Iniciar agrupe itens do manipulador de protocolo nos resultados do menu Iniciar, com o benefício resultante de que o usuário pode clicar no cabeçalho do grupo e exibir os resultados somente do manipulador de protocolo. Como alternativa, o usuário pode navegar até a pasta Pesquisas, abrir o arquivo do conector de pesquisa e executar uma pesquisa que inclua apenas itens do manipulador de protocolo específico associado a esse conector de pesquisa.

Quando um usuário inicia pela primeira vez um aplicativo que registra um manipulador de protocolo, o Windows Explorer gera um arquivo de conector de pesquisa (.searchConnector-ms) para o manipulador de protocolo na pasta Pesquisas do usuário. Os aplicativos com manipuladores de protocolo podem optar por desabilitar esse comportamento ou personalizar o nome e a descrição do conector de pesquisa do manipulador de protocolo.

Observação

O local da pasta Pesquisas do usuário é %userprofile%\Searches ou FOLDERID_SavedSearches. O GUID para FOLDERID_SavedSearches é {7d1d3a04-debb-4115-95cf-2f29da2920da}.

 

O Windows Explorer controla a criação de um conector de pesquisa para um manipulador de protocolo por meio de entradas de chave do Registro descritas nas seguintes seções:

Observação

Não há meios programáticos para criar um conector de pesquisa para um manipulador de protocolo. Eles devem ser configurados por meio do Registro.

 

As chaves do Registro e seus valores possíveis são descritos na tabela a seguir. Um manipulador de protocolo pode preencher algumas ou todas essas chaves do Registro em que <protocol> é substituído pelo nome real de seu protocolo, como MAPI, arquivo ou csc, por exemplo.

Chave do Registro Valores possíveis Tipo Comentários
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows Search\PHSearchConnectors\<protocol>\Version Não existe (padrão). Caso contrário, é 1 ou maior. REG_DWORD Esse valor é usado para detectar alterações nos registros de modelo de local para raízes de pesquisa que já foram processadas. Se não existir, use 0 como padrão. Como alternativa, incremente a versão para informar ao Windows Explorer que o conector de pesquisa deve ser regenerado porque uma versão mais recente do manipulador de protocolo foi instalada.
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows Search\PHSearchConnectors\<protocol>\DoNotCreateSearchConnectors Não existe (padrão). Caso contrário, defina como 1. REG_DWORD Se ele não existir, crie um arquivo .searchconnector-ms na pasta Pesquisas. Se 1, marque como processado e não faça nada.
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows Search\PHSearchConnectors\<protocol>\Default\Description Uma cadeia de caracteres localizável que contém a descrição do conector de pesquisa. REG_SZ Opcional. Ele é usado no elemento Description do arquivo .searchconnector-ms.
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows Search\PHSearchConnectors\<protocol>\Default\Name Uma cadeia de caracteres localizada para nomear o conector de pesquisa. Usado como o nome do arquivo .searchconnector-ms. REG_SZ Cada local deve ter um nome exclusivo. Na ausência desse valor, o nome de exibição fornecido pela interface IShellFolder do manipulador de protocolo será usado.
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows Search\PHSearchConnectors\<protocol>\Default\FolderType Um GUID que identifica o FOLDERTYPEID a ser aplicado ao conector de pesquisa. REG_SZ Opcional. Usado no elemento folderType do arquivo .searchconnector-ms para indicar quais modelos devem ser usados para exibir resultados. Por exemplo, o valor GUID de FOLDERTYPEID_Documents.

 

Desabilitar a criação do conector de pesquisa do manipulador de protocolo

Se o aplicativo expor itens por meio de um manipulador de protocolo para uso no próprio aplicativo e você não quiser expor os itens por meio do Shell (no menu Iniciar e nas pesquisas do Windows Explorer), será necessário desabilitar a criação de um conector de pesquisa para o manipulador de protocolo.

Para desabilitar a criação do conector de pesquisa, defina DoNotCreateSearchConnectors como 0x00000001(1), conforme mostrado no exemplo de chave do Registro a seguir.

HKEY_LOCAL_MACHINE
   Software
      Microsoft
         Windows Search
            PHSearchConnectors
               <protocol>
                  DoNotCreateSearchConnectors

Se DoNotCreateSearchConnectors estiver definido como 1, é recomendável expor a propriedade System.Shell.OmitFromView em cada item exposto pelo manipulador de protocolo e definir o valor dessa propriedade como TRUE. Isso impedirá que os itens do manipulador de protocolo apareçam no menu Iniciar, grupo Arquivos.

Se DoNotCreateSearchConnectors estiver presente e definido como zero, o Windows Explorer criará um conector de pesquisa para o manipulador de protocolo e os itens do manipulador de protocolo serão retornados no menu Iniciar e nas pesquisas do Windows Explorer.

Personalizar o nome, a descrição ou o tipo de pasta para um conector de pesquisa do manipulador de protocolo

O nome do conector de pesquisa é usado não apenas para identificar o conector de pesquisa na pasta Pesquisas, mas como o cabeçalho do grupo para os resultados nas pesquisas do menu Iniciar. Portanto, é importante fornecer um nome descritivo para o conector de pesquisa. Se um nome não for fornecido na chave do Registro, por padrão, o Windows Explorer usará o nome fornecido pela interface IShellFolder para a raiz de pesquisa e a descrição em branco do manipulador de protocolo. Você pode substituir o nome padrão por meio de uma entrada de chave do Registro sem precisar renomear a interface IShellFolder. Embora não seja tão visível quanto o nome do conector de pesquisa, você também pode substituir a descrição do conector de pesquisa fornecendo sua própria descrição.

Para substituir o nome ou a descrição padrão, defina as entradas conforme mostrado no exemplo do Registro a seguir.

HKEY_LOCAL_MACHINE
   Software
      Microsoft
         Windows Search
            PHSearchConnectors
               <protocol>
                  Default
                     Name
                     Description

Além disso, a entrada FolderType pode ser definida como um dos GUIDs FOLDERTYPEID. O valor deve ser o GUID real, e não seu nome. Por exemplo, {94d6ddcc-4a68-4175-a374-bd584a510b78} em vez de FOLDERTYPEID_Music. O GUID para um FOLDERTYPEID pode ser obtido no arquivo de cabeçalho Shlguid.h no SDK do Windows.

HKEY_LOCAL_MACHINE
   Software
      Microsoft
         Windows Search
            PHSearchConnectors
               <protocol>
                  Default
                     FolderType = {94d6ddcc-4a68-4175-a374-bd584a510b78}

Usar o redirecionamento de cadeias de caracteres do Registro

Você pode usar uma cadeia de caracteres redirecionada para garantir que o nome fornecido para o conector de pesquisa possa ser localizado. É possível incluir cadeias de caracteres localizáveis para as chaves do Registro de nome e descrição em vez de inserir a cadeia de caracteres real no Registro.

Para incluir uma cadeia de caracteres localizável para os valores Name ou Description, defina o valor conforme mostrado no exemplo de chave do Registro a seguir.

HKEY_LOCAL_MACHINE
   Software
      Microsoft
         Windows Search
            PHSearchConnectors
               <protocol>
                  Name = @dllname.dll,-resourceID

A cadeia de caracteres localizável tem o seguinte formato:

  • @dllname.dll,-resourceID, em que:
    • @dllname.dll é o caminho para a DLL que contém o recurso de cadeia de caracteres
    • resourceID é a ID do recurso de inteiro do recurso da cadeia de caracteres

O formato de uma cadeia de caracteres indireta e uma cadeia de caracteres indireta anexada com um modificador de versão é descrito em Função SHLoadIndirectString.

Restaurar um conector de pesquisa do manipulador de protocolo excluído

Como os conectores de pesquisa são arquivos no computador do usuário, eles podem ser excluídos por engano. Para restaurar todos os conectores de pesquisa do manipulador de protocolo excluídos, restaure as bibliotecas padrão. Para isso, abra o Windows Explorer, clique com o botão direito do mouse na pasta Bibliotecas e selecione Restaurar Bibliotecas Padrão.

screen shot showing the restore default libraries menu option

Recursos adicionais

Conceitual

Noções básicas sobre manipuladores de protocolo

Desenvolver manipuladores de protocolo

Notificar o índice de alterações

Adicionar ícones e menus de contexto

Exemplo de código: extensões de Shell para manipuladores de protocolo

Instalar e registrar manipuladores de protocolo

Depurar manipuladores de protocolo