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 no registro de Windows e Active Directory Domain Services para notificar os snap-ins administrativos do MMC do Active Directory e o shell de Windows da extensão.

Registrando-se no Registro de Windows

Como todos os servidores COM, uma extensão de menu de contexto deve ser registrada no Registro. A extensão é registrada na chave a seguir.

HKEY_CLASSES_ROOT
   CLSID
      <clsid>

<clsid> é a representação de cadeia de caracteres do CLSID, conforme produzido pela função StringFromCLSID . <Na 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 de menu de contexto deve usar o modelo de threading "Apartment".

Registrando-se com Active Directory Domain Services

O registro de extensão de menu de contexto é específico para uma localidade. Se a extensão de menu de contexto se aplicar a todas as localidades, ela deverá ser registrada no objeto displaySpecifier da classe de objeto em todos os subcontenentes de localidade no contêiner Especificadores de Exibição. Se a extensão de menu de contexto for localizada para uma determinada localidade, ela deverá ser registrada no objeto displaySpecifier no subcontensor dessa localidade. Para obter mais informações sobre o contêiner e as localidades dos Especificadores de Exibição, consulte Especificadores de Exibição e Contêiner displaySpecifiers.

Há dois atributos especificador de exibição nos quais um item de extensão de menu de contexto pode ser registrado. Eles 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 é exibido quando o usuário exibe o menu de contexto para objetos da classe apropriada em um dos snap-ins administrativos do MMC do Active Directory.

O atributo shellContextMenu identifica menus de contexto do usuário final a serem exibidos no shell Windows. O menu de contexto é exibido quando o usuário exibe o menu de contexto para objetos da classe apropriada no Gerenciador de Windows. A partir do Windows Server 2003, o shell Windows não exibe mais objetos de Active Directory Domain Services.

Todos esses atributos são de vários valores.

Ao registrar uma extensão de menu de contexto, os valores dos atributos adminContextMenu e shellContextMenu exigem o formato a seguir.

<order number>,<clsid>

O "<número> da ordem" é um número sem sinal 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> de pedido" de cada valor. Se mais de um valor tiver o mesmo "<número> de pedido", essas extensões de menu de contexto serão carregadas na ordem em que são lidas do servidor do Active Directory. Se possível, use um "<número> de pedido" não existente, ou seja, um que não tenha sido usado por outros valores na propriedade. Não há nenhuma posição inicial prescrita e as lacunas são permitidas na sequência "<número> de pedido".

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

No shell Windows, há suporte para itens de menu de contexto de seleção múltipla. Nesse caso, a extensão de menu de contexto é invocada para cada objeto selecionado. Em 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 de 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 são armazenados em cache durante o processo. Para o shell Windows, isso significa que as alterações para exibir especificadores entrarão em vigor depois que um usuário fizer logoff e voltar a ligar novamente. Para os snap-ins administrativos, as alterações entrarão em vigor quando o arquivo snap-in ou console for 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 especificados de exibição mais recentes 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 do Menu de Contexto.