Compartilhar via


Depuração com o Shell

Este tópico explica como depurar O Shell e as DLLs de extensão de namespace.

Executando o shell em um depurador

Para depurar sua extensão, você precisa executar o Shell do depurador. Siga estas etapas:

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

  2. Desligue o Shell.

    • Para Windows Vista e posterior:
      1. Exibir o menu Iniciar .
      2. Pressione CTRL+SHIFT e clique com o botão direito do mouse na tela de fundo da metade direita do menu Iniciar .
      3. No menu exibido, escolha Sair Explorer.
    • Para Windows XP:
      1. No menu Iniciar , escolha Desligar.
      2. Pressione CTRL+ALT+SHIFT e clique em Não na caixa de diálogo Desligar o Windows .

    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 DLL de extensão com Explorer.exe do diretório do Windows .

  4. Execute o projeto no 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 a barra de tarefas ainda podem ser usadas enquanto você executa e testa as extensões.

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

HKEY_CURRENT_USER
   Software
      Microsoft
         Windows
            CurrentVersion
               Explorer
                  DesktopProcess = 1

Para que essa entrada entre em vigor, você deve fazer logoff e fazer logon novamente. 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 de Explorer e pastas 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 no que diz respeito às extensões do Shell. Muitas dessas extensões (extensões de menu de atalho, por exemplo) serão carregadas no processo de Explorer.exe nondesktop. Se esse processo for encerrado, a área de trabalho e a barra de tarefas não serão afetadas e a próxima janela Explorer ou pasta recriará o processo encerrado.

Descarregando a DLL

O Shell descarrega automaticamente qualquer DLL quando sua contagem de uso é zero, mas somente após a DLL não ter sido usada por um período de tempo. Esse período inativo pode ser inaceitávelmente longo às vezes, especialmente quando uma DLL de extensão do Shell está sendo depurada. Você pode reduzir o período inativo adicionando as seguintes informações ao registro.

HKEY_LOCAL_MACHINE
   Software
      Microsoft
         Windows
            CurrentVersion
               Explorer
                  AlwaysUnloadDll