Registrando o objeto COM do menu de contexto em um especificador de exibição

Quando você usa COM para criar uma DLL de extensão de menu de contexto para um serviço de diretório do Active Directory, a extensão deve ser registrada com o registro do Windows e os Serviços de Domínio Active Directory para notificar os snap-ins do MMC administrativo do Active Directory e o shell do Windows da extensão.

Registrando-se no Registro do Windows

Como todos os servidores COM, uma extensão de menu de contexto deve ser registrada no registro. A extensão é registrada sob a seguinte chave.

HKEY_CLASSES_ROOT
   CLSID
      <clsid>

<clsid é a representação de cadeia de caracteres do CLSID como produzido pela função StringFromCLSID.> Sob a <chave clsid> , há uma chave InProcServer32 que identifica o objeto como um servidor in-proc de 32 bits. Na chave InProcServer32, o local da DLL é especificado no valor padrão e o modelo de threading é especificado no valor ThreadingModel. Toda a extensão do menu de contexto deve usar o modelo de threading "Apartment".

Registrando-se nos Serviços de Domínio Active Directory

O registro da extensão do menu de contexto é específico para uma localidade. Se a extensão do menu de contexto se aplicar a todas as localidades, ela deverá ser registrada no objeto displaySpecifier da classe de objeto em todos os subcontêineres de localidade no contêiner Display Specifiers. Se a extensão do menu de contexto estiver localizada para uma determinada localidade, ela deverá ser registrada no objeto displaySpecifier no subcontêiner dessa localidade. Para obter mais informações sobre o contêiner e as localidades do Display Specifiers, consulte Display Specifiers e DisplaySpecifiers Container.

Há dois atributos especificadores de exibição nos quais um item de extensão de menu de contexto pode ser registrado. Estes são adminContextMenu e shellContextMenu.

O atributo adminContextMenu identifica menus de contexto administrativo a serem exibidos em snap-ins administrativos do Active Directory. O menu de contexto aparece quando o usuário exibe o menu de contexto para objetos da classe apropriada em um dos snap-ins do MMC administrativo do Active Directory.

O atributo shellContextMenu identifica os menus de contexto do usuário final a serem exibidos no shell do Windows. O menu de contexto aparece quando o usuário exibe o menu de contexto para objetos da classe apropriada no Windows Explorer. A partir do Windows Server 2003, o shell do Windows não exibe mais objetos dos Serviços de Domínio Active Directory.

Todos esses atributos são multivalorados.

Ao registrar uma extensão de menu de contexto, os valores para os atributos adminContextMenu e shellContextMenu exigem o seguinte formato.

<order number>,<clsid>

O "número do pedido"< é um número> não assinado que representa a posição do item no menu de contexto. Quando um menu de contexto é exibido, os valores são classificados usando uma comparação do "<número> do pedido" de cada valor. Se mais de um valor tiver o mesmo "<número> do pedido", essas extensões de menu de contexto serão carregadas na ordem em que forem lidas no servidor do Active Directory. Se possível, use um "número> de pedido"< inexistente, ou seja, que não tenha sido usado por outros valores na propriedade. Não há posição inicial prescrita e lacunas são permitidas na sequência "<número> de ordem".

O "clsid"< é a representação de cadeia de caracteres do CLSID como produzido pela função StringFromCLSID.>

No shell do Windows, há suporte para vários itens de menu de contexto de seleção. Nesse caso, a extensão de menu de contexto é invocada para cada objeto selecionado. Nos snap-ins administrativos do Active Directory, também há suporte para itens de extensão de menu de contexto de seleção múltipla. Nesse caso, a estrutura DSOBJECTNAMES conterá uma estrutura DSOBJECT para cada objeto de diretório selecionado.

Importante

Para o shell do Windows, as informações do especificador de exibição são recuperadas no logon do usuário e armazenadas em cache para a sessão do usuário. Para os snap-ins administrativos, os dados do especificador de exibição são recuperados quando o snap-in é carregado e armazenado em cache durante o processo. Para o shell do Windows, isso significa que as alterações nos especificadores de exibição entram em vigor depois que um usuário faz logoff e logon novamente. Para os snap-ins administrativos, as alterações entram em vigor quando o snap-in ou o arquivo de console é recarregado, ou seja, se você iniciar uma nova instância do arquivo de console ou nova instância de Mmc.exe e adicionar o snap-in, os dados mais recentes do especificador de exibição serão recuperados.

 

Para obter mais informações e um exemplo de código de como implementar uma extensão de menu de contexto, consulte Código de exemplo para implementação do objeto COM de menu de contexto.