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:
Carregue o projeto da extensão no depurador, mas não o execute.
Desligue o Shell.
- Para Windows Vista e versões posteriores:
- Exiba o menu Iniciar.
- Pressione CTRL+SHIFT e clique com o botão direito do mouse no plano de fundo da metade direita do menu Iniciar.
- No menu exibido, escolha Sair do Explorer.
- Para o Windows XP:
- No menu Iniciar, escolha Encerrar.
- 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.
- Para Windows Vista e versões posteriores:
Defina o depurador para executar a extensão DLL com Explorer.exe a partir do diretório Windows .
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