Partilhar via


Depuração com o Shell

Esta seção explica como depurar DLLs de extensão de Shell e de namespace.

Executando o shell num depurador

Para depurar sua extensão, você precisa executar o Shell a partir do depurador. Siga estes passos:

  1. Carregue o projeto da extensão no depurador, mas não o execute.

  2. Desligue o Shell.

    • Para Windows Vista e versões posteriores:
      1. Exiba o menu Iniciar.
      2. Pressione CTRL+SHIFT e clique com o botão direito do mouse no plano de fundo da metade direita do menu Iniciar.
      3. No menu exibido, escolha Sair do Explorer.
    • Para o Windows XP:
      1. No menu Iniciar, escolha Encerrar.
      2. Prima CTRL+ALT+SHIFT e clique em Não na caixa de diálogo Encerrar o Sistema.

    O Shell agora está desligado, mas todos os outros aplicativos ainda estão em execução, incluindo o depurador.

  3. Defina o depurador para executar a extensão DLL com Explorer.exe a partir do diretório Windows .

  4. Execute o projeto a partir do depurador. O Shell será iniciado como de costume, mas o depurador será anexado ao processo do Shell.

Executando e testando extensões de shell

Você pode executar e testar suas extensões em um processo separado do Windows Explorer para evitar parar e reiniciar a área de trabalho e a barra de tarefas. Sua área de trabalho e barra de tarefas ainda podem ser usadas enquanto você executa e testa as extensões.

Para habilitar esse recurso, adicione a seguinte entrada REG_DWORD ao registro.

HKEY_CURRENT_USER
   Software
      Microsoft
         Windows
            CurrentVersion
               Explorer
                  DesktopProcess = 1

Para que esta entrada entre em vigor, tem de terminar sessão e voltar a iniciá-la. Essa configuração faz com que as janelas da área de trabalho e da barra de tarefas sejam criadas em um processo de Explorer.exe e todas as outras janelas do Explorer e da pasta sejam abertas em um processo de Explorer.exe diferente.

Além de tornar a execução e o teste de suas extensões mais convenientes, essa configuração também torna a área de trabalho mais robusta em relação às extensões do Shell. Muitas dessas extensões (extensões de menu de atalho, por exemplo) serão carregadas no processo não-desktop Explorer.exe. Se esse processo for encerrado, a área de trabalho e a barra de tarefas não serão afetadas, e a próxima janela do Explorer ou da pasta recriará o processo encerrado.

Descarregando a DLL

O Shell descarrega automaticamente qualquer DLL quando sua contagem de uso é zero, mas somente depois que a DLL não tiver sido usada por um período de tempo. Esse período inativo pode ser excessivamente longo, especialmente quando se depura uma DLL de extensão do Shell. Você pode encurtar o período inativo adicionando as seguintes informações ao registro.

HKEY_LOCAL_MACHINE
   Software
      Microsoft
         Windows
            CurrentVersion
               Explorer
                  AlwaysUnloadDll