Compartilhar via


Depurando uma extensão do Active Directory

A folha de propriedades do serviço de diretório do Microsoft Active Directory, o menu de contexto e as extensões do assistente de criação de objeto documentados neste tópico são implementados como servidores COM in-proc. Ou seja, cada extensão é uma DLL que é executada no contexto do processo do host. Para depurar a extensão, é necessário associar a extensão a um aplicativo e executar o aplicativo em um depurador.

Depurando extensões do Active Directory exibidas no Shell do Windows

As extensões do Active Directory exibidas no shell do Windows são carregadas no contexto do processo de Explorer.exe. Essas extensões podem ser depuradas como uma extensão de shell padrão. Para obter mais informações sobre como depurar extensões de shell, consulte Depurando com o Shell.

Depurando extensões do Active Directory exibidas nos snap-ins do MMC do Active Directory

As extensões do Active Directory exibidas nos snap-ins do MMC administrativo do Active Directory são carregadas no contexto do Console de Gerenciamento Microsoft. Para depurar uma extensão, localize Mmc.exe no sistema local e defina o depurador para usá-lo como o aplicativo para depuração. Na maioria dos sistemas, Mmc.exe está localizado no diretório de sistema do Windows, por exemplo, C:\WINNT\System32. Dependendo do depurador, você pode ou não ter que definir a DLL de extensão para também ser carregada pelo depurador. Muitos depuradores também permitem que você anexe o depurador a um processo MMC em execução. Para obter mais informações, consulte o Guia do Usuário do depurador.

Pode ser conveniente fazer com que o MMC carregue automaticamente um snap-in específico. Para fazer isso, defina os argumentos do aplicativo para o caminho e o nome de arquivo de um arquivo MSC. Isso pode ser um arquivo MSC instalado no sistema ou um arquivo que você criar. Um arquivo MSC pode ser criado seguindo estas etapas.

  1. Execute Mmc.exe.
  2. Carregue o snap-in desejado selecionando Arquivo - Adicionar/Remover Snap-in... no menu MMC e selecione o snap-in desejado.
  3. Salve o arquivo MSC selecionando Arquivo - Salvar como... no menu MMC.

Se você não definir um arquivo MSC de inicialização, deverá carregar manualmente o snap-in desejado ao executar o aplicativo no depurador.

Quando o aplicativo host é executado no depurador, o depurador pode exibir uma mensagem de aviso informando que o aplicativo que está sendo executado não contém nenhum símbolo de depuração. Isso é esperado e pode ser ignorado com segurança porque você está realmente depurando a DLL, não o aplicativo host.

Na maioria dos casos, a extensão não será chamada até que o usuário execute alguma ação que faça com que a extensão seja carregada e inicializada. Por exemplo, se você estiver depurando uma extensão de menu de contexto exibida para objetos de usuário, a extensão não será carregada até a primeira vez que o menu de contexto de um objeto de usuário for exibido.

Agora você deve ser capaz de definir pontos de interrupção e exibir a saída de depuração. Se a extensão não parecer carregar, defina um ponto de interrupção na função DllGetClassObject da extensão. Se DllGetClassObject não for chamado, a extensão provavelmente não está registrada corretamente.

Quando a depuração estiver concluída, saia do MMC e o depurador deverá descarregar normalmente.