Modificar o Explorador de Arquivos do Windows usando extensões do Shell

  • As extensões do Shell permitem uma personalização profunda do Explorador de Arquivos, que vai além do que o Registro oferece.
  • O Windows oferece vários controladores (menu de contexto, ícones, miniaturas, metadados e namespace) para personalizar o comportamento de cada arquivo individualmente.
  • No Windows 11, você pode limpar e acelerar o Explorador de Arquivos modificando as chaves do Registro para menus, painel esquerdo e modelos de pastas.
  • Aplicações modernas empacotadas com MSIX integram menus de contexto e servidores COM por meio de extensões declaradas no manifesto.

Personalize o Explorador de Arquivos do Windows

Se você é uma daquelas pessoas que se frustram com menus cheios de opções que não usa, integrações mal implementadas ou lentidão na abertura de pastas, então isto é para você., você veio ao lugar certo.

No Windows, você pode modificar o comportamento do Explorador de Arquivos e do menu de contexto de diversas maneiras (incluindo Truques do Explorador de Arquivos no Windows 11): através do Registro, com extensões clássicas do Shell na forma de DLLs, com pacotes MSIX modernos e até mesmo criando suas próprias extensões em .NET ou C++. Vamos explorar todas essas possibilidades com calma, mas sem rodeios.

O que são extensões do Shell e por que o Registro fica aquém?

O Shell do Windows pode ser estendido de forma básica por meio de entradas no Registro e arquivos .ini.Essa abordagem é simples e geralmente suficiente para personalizar ícones por tipo de arquivo, adicionar comandos extras ou associar extensões. No entanto, ela tem uma limitação significativa: tudo o que você define se aplica ao nível do tipo de arquivo, não a arquivos individuais.

Um exemplo típico é o de ícones personalizados por extensão.Se você atribuir um ícone ao arquivo .docx no Registro, TODAS Cópias desse tipo de arquivo exibirão o mesmo ícone, mesmo que você tente diferenciá-las. E existem áreas do Shell, como a folha de propriedades que aparece quando você clica com o botão direito e escolhe Propriedadesque simplesmente não podem ser modificadas usando apenas chaves do Registro.

Para controlar verdadeiramente o Explorer, você precisa ir um passo além e usar manipuladores de extensão do shell.Esses são componentes COM (geralmente DLLs) que o Shell invoca cada vez que executa uma ação específica: exibir um ícone, abrir o menu de contexto, renderizar uma miniatura, mostrar uma dica de ferramenta etc. O Explorer consulta o driver imediatamente antes de executar a operação, dando-lhe a oportunidade de alterar o resultado.

Um exemplo muito comum é o controlador de menu de contexto.Se você criar um componente para um tipo de arquivo, o Windows o invocará sempre que você clicar com o botão direito do mouse em qualquer arquivo desse tipo. Esse componente pode adicionar diferentes itens de menu dependendo do arquivo específico, do número de itens selecionados, do caminho, etc., algo impossível de se conseguir apenas com uma simples associação de comando no Registro.

Dentro dessa família de controladores, existem dois grupos principais.Esses são os comandos vinculados a tipos de arquivo específicos (e que operam "por arquivo") e aqueles que são executados em operações gerais do Shell (sem depender de uma extensão específica). Analisá-los em detalhes ajuda a compreender suas limitações.

Extensões do Shell no Windows

Controladores principais associados a tipos de arquivo

Os manipuladores baseados em tipo de arquivo permitem personalizar o comportamento do Explorador para extensões de arquivo específicas.Eles funcionam no nível de cada arquivo individual, permitindo que você adapte menus, ícones ou propriedades dependendo de cada elemento.

  • Controlador de menu de contexto. Ele é executado imediatamente antes de exibir o menu de contexto de um arquivo. Permite adicionar comandos adicionais, reorganizar itens e exibir opções apenas para arquivos ou situações específicas (por exemplo, se vários arquivos estiverem selecionados, se for uma pasta específica etc.).
  • Manipulador de dados. Isso entra em ação em operações de arrastar e soltar em objetos do Shell. Pode contribuir. Formatos adicionais da área de transferência para que o destino tenha mais informações (por exemplo, uma representação alternativa em formato XML ou binário).
  • Manipulador de queda. Este comando é invocado quando você arrasta ou solta dados em um arquivo específico. Ele permite que um arquivo sirva como destino para uma operação de arrastar e soltar, por exemplo, soltando vários arquivos em um arquivo .zip ou em um banco de dados.
  • Manipulador de ícones. É chamado antes que o Shell exiba o ícone do arquivo. Permite substituir o ícone genérico de um tipo de arquivo por um ícone personalizado gerado para cada arquivo, o que é muito útil para elementos como imagens, documentos de projeto, status de sincronização, etc. Para isso, é recomendável consultar a documentação. Melhores extensões para o Explorer.
  • Controlador de folha de propriedades. Ela é ativada quando você está prestes a exibir a caixa de diálogo. Propriedades de um objeto. Você pode usá-lo para adicionar guias adicionais ou substituir algumas das existentes, de forma que seu aplicativo exponha suas configurações diretamente na guia de propriedades do arquivo.
  • Gerador de miniaturas. Ele gera a imagem que você vê na miniatura do Explorador de Arquivos. Isso permite que um arquivo de vídeo exiba um quadro representativo ou que um formato de imagem incomum seja visualizado sem depender de aplicativos externos.
  • Manipulador de dicas de informação. Isso é usado para gerar a dica de ferramenta que aparece quando você passa o mouse sobre um arquivo. Aqui você pode exibir metadados relevantes: duração do áudio, resolução da foto, status do documento, etc.
  • Controlador de metadados. Ele fornece acesso de leitura e gravação às propriedades armazenadas em um arquivo. Graças a ele, você pode expandir a visualização de Detalhes, informações de dicas de ferramentas, agrupamentos e colunas adicionais com metadados personalizados.

Outros drivers do Shell não estão vinculados a um tipo de arquivo.

Além dos drivers que dependem de um tipo de arquivoExistem outros comandos que o Shell invoca antes de certas operações gerais do Explorer. São esses comandos que permitem personalizações de nível superior.

  • Controlador de coluna. A visualização é verificada antes de ser exibida. Detalhes A partir de uma pasta. É utilizada para adicionar colunas personalizadas (por exemplo, "Classificação", "Autor Interno", "Status de Validação") que são preenchidas com informações calculadas pela sua extensão.
  • Manipulador de gancho de cópia. Este comando é invocado quando o sistema está prestes a mover, copiar, excluir ou renomear uma pasta ou impressora. Ele permite aprovar ou bloquear essa operação, o que é muito útil em soluções de segurança, políticas corporativas ou pastas monitoradas.
  • Manipulador contextual de arrastar e soltar. Isso acontece quando você arrasta um arquivo com o botão direito do mouse. Você pode modificar o menu de contexto que aparece ao soltar o botão do mouse, incluindo ações especiais como "Converter e Mover", "Carregar e Excluir Original", etc.
  • Manipulador de sobreposição de ícones. Adicione um pequeno marcador ao ícone de um arquivo ou pasta (por exemplo, a marca de seleção verde para arquivos sincronizados ou um ponto de exclamação). O shell invoca essa função imediatamente antes de renderizar o ícone, e seu código decide qual sobreposição aplicar.
  • Controlador de pesquisa. É utilizado para iniciar mecanismos de busca personalizados integrados ao próprio shell. Com ele, você pode disponibilizar seu próprio mecanismo de busca, acessível a partir do menu. Início ou pelo Explorer, que funciona com dados remotos ou estruturas não padronizadas.

Menu de contexto e extensões do Explorador

Extensões de namespace: pastas virtuais no Explorador de Arquivos

O Windows Explorer não se limita a ensinar o sistema de arquivos tradicional.Na verdade, reflete um "espaço de nomes" completo que inclui pastas virtuais como a Lixeira, Bibliotecas ou Impressoras. Com uma extensão de espaço de nomes, você pode envolver qualquer conjunto de dados e apresentá-lo como se fosse uma pasta normal.

Ao criar uma extensão de namespace, o Explorador exibe seus dados como uma hierarquia de pastas e arquivos.Mesmo que estejam de fato em um banco de dados, em um dispositivo remoto ou sejam simplesmente links lógicos (como no caso de impressoras), elas se comportam como qualquer outra pasta para o usuário: ele pode copiar, mover, excluir, visualizar propriedades e até mesmo realizar buscas.

Tecnicamente, cada pasta visível no Explorador de Arquivos é representada por um objeto COM chamado "objeto de pasta".Quando o usuário interage com essa pasta ou seu conteúdo, o Shell se comunica com esse objeto por meio de interfaces padrão, como: Pasta IShellO objeto responde a solicitações (itens da lista, ícones de retorno, nomes, atributos…) e o Shell atualiza a interface gráfica.

Esse modelo é especialmente útil quando seus dados não se encaixam bem na estrutura padrão de arquivos e pastas.Imagine um banco de dados que você deseja navegar como se fossem pastas, o conteúdo de uma câmera digital sem um sistema de arquivos do Windows ou uma coleção de objetos puramente lógicos (por exemplo, trabalhos de impressão em uma fila).

Uma extensão de namespace é amplamente dividida em duas partes.Um gerenciador de dados (como e onde você armazena as informações, de acordo com suas preferências) e uma camada de interface com o Explorador que empacota esses dados como pastas e arquivos. Esta segunda parte é o que implementa as interfaces COM para que o DefView (a visualização de pastas padrão) e o restante do Shell saibam como exibir e manipular o conteúdo.

Como as visualizações do Explorer interagem com uma extensão

A janela do Explorador de Arquivos é composta por diversas áreas: visualização em árvore, visualização de pastas, barras de menu e de ferramentas e barra de status.Ao entrar em uma pasta gerenciada pela sua extensão de namespace, seu código pode influenciar todas as outras pastas, embora em graus variados.

A visualização em árvore mostra uma visão geral da hierarquia.Ele hospeda um controle TreeView que exibe cada pasta no namespace e sua posição. A partir daí, o usuário pode expandir os níveis, arrastar pastas, usar o menu de contexto ou abrir subpastas. O Explorer se comunica principalmente através de Pasta IShell, solicitando atributos, listando subpastas, solicitando nomes de exibição e ícones.

A visualização de pastas (o painel direito com os arquivos) é ainda mais flexível.Diferentemente da visualização em árvore, o Explorer não controla diretamente seu conteúdo; ele simplesmente cria uma janela filha e a passa para o objeto de pasta. Essa janela pode hospedar um ListView clássico, um controle de navegador da web com HTML dinâmico ou qualquer outra coisa que faça sentido para seus dados.

A prática usual é reutilizar DefView usando a função SHCreateShellFolderView.Isso oferece a visualização padrão com ícones, detalhes, classificação, grupos etc., permitindo que você se concentre em fornecer os dados. No entanto, se precisar de uma apresentação muito específica, você pode criar uma visualização totalmente personalizada.

O menu e as barras de ferramentas do Explorer podem ser personalizados pela sua extensão.O shell expõe a interface. Navegador IShellIsso permite adicionar ou remover botões e itens de menu, ou reagir a comandos específicos. Quando o usuário clica em um botão personalizado, o Explorer encaminha a mensagem. WM_COMMAND para a sua janela para que você possa processar a ação.

A barra de status é outro canal muito útil.Do mesmo Navegador IShell Você pode atualizar o texto para exibir informações contextuais sobre o objeto selecionado, o número de itens, erros em sua extensão, etc., melhorando assim a sensação de integração com o sistema.

Crie extensões de navegador usando uma biblioteca de classes .NET.

Se você desenvolve em .NET, existe a opção de usar uma biblioteca com classes base para simplificar a criação de muitas dessas extensões.A ideia é muito simples: você cria um projeto de biblioteca de classes, adiciona uma classe COM e faz com que ela herde da classe base que corresponde ao tipo de extensão que você deseja implementar.

Por exemplo, o BrowserHelperObjectBase facilita a criação de objetos auxiliares de navegador para o Internet Explorer.Mapeando métodos, eventos e propriedades do navegador para o seu código. Você expõe coisas como a instância do IE (propriedade) InternetExplorer), a janela na qual o objeto é executado (Locale você lida com eventos como Ao conectar u Ao desconectar.

ContextMenuHandlerBase simplifica a criação de menus de contexto para o Explorador de Arquivos.Você só precisa preencher a coleção. Itens do menu com objetos MenuItem, como você faria em um formulário do Windows Forms, e conecte-se ao evento. Clique de cada opção. A propriedade Arquivos Ele fornece a lista de arquivos selecionados e o método. Selecionado no menu É utilizado para atualizar o texto de ajuda na barra de status.

Com DropHandlerBase, você implementa manipuladores de arrastar e soltar associados a um arquivo.Você possui propriedades como Nome do arquivo (o destino para onde os arquivos são enviados) e Arquivos (os arrastados), e de métodos como Ao arrastarEnter, Ao arrastar, Ao arrastar e sair y Ao arrastar e soltar reagir a cada fase do arrasto.

IconHandlerBase permite retornar o ícone que o Explorer exibirá. para cada arquivo. De AoObterLocalizaçãoDoÍcone Você decide onde o ícone estará e em OnExtractIcon Você retorna os manipuladores de ícones específicos, podendo gerar miniaturas ou representações avançadas.

O registro dessas extensões .NET é feito via COM usando o regasm.exe.As classes base incluem métodos marcados com ComRegisterFunction y ComUnregisterFunction Essas classes são responsáveis ​​por criar ou excluir as entradas de registro apropriadas quando você registra o assembly. Além disso, muitas dessas classes oferecem suporte ao atributo. Tipos de Arquivo de Extensão Para indicar quais tipos de arquivo eles afetam (pode ser uma lista separada por vírgulas ou o caractere curinga * para todos).

Substitua ou modifique o shell (explorer.exe) no nível do sistema.

Outra forma de "alterar" radicalmente o ambiente Windows é modificar o shell padrão.Ou seja, o programa que inicia quando você faz login. Em sistemas de propósito único (quiosques, dispositivos industriais, terminais), às vezes você não quer que o Explorer seja executado, mas sim um único aplicativo em tela cheia; se precisar de outras opções, consulte alternativas ao Windows Explorer.

Nos ambientes Windows Server e cliente, esse comportamento é controlado por meio do Registro., na chave HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\ShellAo substituir o valor pelo caminho para o seu executável, você garante que seu programa seja carregado em vez do Explorador de Arquivos clássico quando você fizer login.

A precaução aqui é clara.Desativar o explorer.exe como shell deixa o usuário final sem área de trabalho, barra de tarefas ou janelas de pastas, sendo, portanto, uma opção mais adequada para sistemas fechados. Além disso, é sempre recomendável ter um método alternativo de administração e recuperação (RDP, modo de segurança, GPO etc.).

Personalize o Explorador de Arquivos do Windows 11 a partir do Registro.

Além das extensões COM, muitos usuários simplesmente desejam remover opções incômodas do menu de contexto ou restaurar o comportamento clássico.No Windows 11, a reformulação do menu de contexto (clique com o botão direito do mouse) e a integração de recursos como o Copilot geraram bastante crítica, principalmente entre usuários avançados.

A primeira coisa que você precisa ter em mente é que mexer no Registro do Windows não é brincadeira.Uma alteração incorreta pode desestabilizar o sistema, portanto, primeiro crie um ponto de restauração ou um backup do Registro. E, claro, certifique-se de copiar os caminhos exatamente como mostrado.

Para abrir o Editor do Registro, basta digitar "regedit" no menu Iniciar. e lançar o Editor de registroA partir daí, você pode navegar por cada ramo que vamos mencionar e criar chaves, valores de string ou DWORDs conforme necessário.

Remova “Pergunte ao Copiloto” e outras entradas do menu de contexto.

Se você tiver o aplicativo ou a integração do Copilot instalada no Windows 11Ao clicar com o botão direito do mouse em um arquivo, você provavelmente verá a opção. “Pergunte ao Copiloto”Essa opção ocupa espaço no menu e, se você não usar a função, ela só atrapalha.

Para desativá-lo no Registro, navegue até HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Shell ExtensionsDentro dessa ramificação, crie uma nova chave chamada BloqueadoUma vez lá dentro, adicione um novo. valor da cadeia cujo nome será {CB3B0003-8088-4EDE-8769-8B354AB2FF8C} e deixe o conteúdo em branco.

O mesmo truque funciona para desmarcar outras opções, como "Editar com o Bloco de Notas", Paint ou Clipchamp.Sempre trabalhando sob a filial HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Shell Extensions e dentro da chave BloqueadoVocê pode criar diferentes valores de string:

  • {CA6CC9F1-867A-481E-951E-A28C5E4F01EA} para esconder “Editar com o Bloco de Notas”.
  • {8BCF599D-B158-450F-B4C2-430932F2AF2F} para remover a opção Clipchamp.
  • {2430F218-B743-4FD6-97BF-5C76541B4AE9} remover a integração de pintar.

Após a criação desses valores, reinicie o Explorador de Arquivos ou o computador para que o Windows recarregue as configurações.Para reverter qualquer uma delas, basta excluir o valor correspondente ou a chave inteira. Bloqueado Se você quiser recuperar todos os ingressos.

Traga de volta o menu de contexto clássico do Windows 10

Uma das mudanças mais comentadas no Windows 11 é o novo menu de contexto simplificado.Não é que seja "ruim" em si, mas muitos usuários veteranos sentem falta do menu completo do Windows 10, com todas as opções visíveis sem precisar clicar em "Mostrar mais opções".

Para retornar ao estilo clássico, você pode usar outra pequena modificação no Registro.. Vamos para HKEY_CURRENT_USER\SOFTWARE\CLASSES\CLSID (Observação: Não confunda isso com a ramificação .cls) e crie uma nova chave com o nome {86ca1aa0-34aa-4e8b-a509-50c905bae2a2}.

Dentro dessa chave recém-criada, adicione outra chamada InprocServer32.No painel direito, clique duas vezes no valor. (Pré-determinado) Certifique-se de que o campo de dados esteja completamente vazio. Aceite as alterações e feche o editor.

Após reiniciar o computador, clicar com o botão direito do mouse em arquivos ou pastas exibirá o menu de contexto, exatamente como aparecia no Windows 10.Com todas as opções tradicionais disponíveis instantaneamente. Se você decidir retornar ao comportamento original do Windows 11, basta excluir esta chave CLSID (e sua subchave InprocServer32).

Melhore o desempenho do Explorador ajustando a visualização de pastas.

O Explorador de Arquivos pode ficar bastante lento se o Windows tentar aplicar modelos de pasta específicos a cada caminho. (por exemplo, “Imagens”, “Vídeos”, “Documentos”, etc.) e precisa analisar o conteúdo para decidir qual visualização usar. Isso é especialmente perceptível em computadores com muitos arquivos ou discos rígidos mecânicos.

Um truque para acelerar a navegação é configurar o sistema para tratar todas as pastas como genéricas.para que a análise seja mais direta. Isso é alcançado na chave HKEY_CURRENT_USER\Software\Classes\Configurações locais\Software\Microsoft\Windows\Shell\Bags\AllFolders\Shell.

Dentro dessa chave, crie um valor de string chamado FolderType. e atribui como conteúdo Não especificadoSalve as alterações e reinicie o computador, ou faça logout e login novamente.

Ao reabrir o Explorador de Arquivos, você notará que a troca de pastas está mais fluida.Principalmente se você trabalha frequentemente com arquivos contendo milhares de arquivos ou uma grande variedade de tipos de arquivo. Não é mágica, mas ajuda a economizar alguns segundos aqui e ali. Essa configuração é particularmente útil se O Explorer é lento.

Integração do Explorer com aplicativos empacotados em MSIX

Até agora, falamos principalmente sobre extensões registradas diretamente no Registro.Essa é a abordagem clássica usada pelos instaladores MSI ou ClickOnce. Essas tecnologias criam chaves em diferentes ramos do Registro para registrar menus de contexto, associações de arquivos e assim por diante.

Com aplicativos empacotados em MSIX, o cenário muda.O Registro é virtualizado para o aplicativo e você não pode mais confiar nele para registrar extensões do Explorer. Em vez disso, você deve usar o extensões de pacote definido no manifesto do pacote (Package.appxmanifest), onde você declara associações de tipo de arquivo, verbos de menu de contexto e servidores COM.

A maneira mais simples de integrar com o Explorer no MSIX é através da extensão windows.fileTypeAssociation.Você declara quais tipos de arquivo são suportados (por exemplo, .foo), quais parâmetros seu executável recebe quando o usuário abre um desses arquivos e quais verbos adicionais aparecerão no menu de contexto (por exemplo, "Redimensionar arquivo").

O elemento FileTypeAssociation define o nome lógico da associação e os tipos que ela suporta.Em seu atributo Parâmetros Técnicos Geralmente dura pelo menos %1que representa o caminho para o arquivo selecionado. Dentro, o elemento Tipos de arquivo suportados Liste as extensões específicas (.foo, .bar, etc.) e Verbos suportados Contém os verbos que serão adicionados ao menu de contexto com seus próprios parâmetros.

Existem duas limitações importantes para este modelo.Você só pode exibir verbos para tipos de arquivo que seu aplicativo já tenha associados a ele, e eles só serão exibidos se o seu aplicativo for o padrão para esse tipo. Além disso, o verbo só pode iniciar o executável principal do aplicativo (embora com parâmetros diferentes), e não outro EXE arbitrário.

Extensões COM avançadas do Shell em pacotes MSIX

Se precisar ir além (controlar pastas genéricas, executar outras tarefas ou não abrir o aplicativo principal todas as vezes)A opção é criar uma extensão COM Shell clássica (DLL) e registrá-la no manifesto MSIX, em vez de usar o registro do sistema.

Uma extensão Shell COM é basicamente uma DLL que expõe uma ou mais classes COM com um CLSID exclusivo.O Windows carrega essa DLL quando o Explorador precisa exibir o menu de contexto, ícones, miniaturas etc., e chama métodos como: Obter título, Obter ícone, Obter dica de ferramenta o invocar (no caso de comandos de menu).

A implementação típica é feita em C++ por motivos de desempenho e consumo de memória.Um exemplo clássico é um projeto semelhante ao “ExplorerCommandVerb”, onde a classe CExplorerCommandVerb O comando de menu foi implementado. O método invocar É aquele que é executado quando o usuário clica na sua opção no menu de contexto, e a partir daí você pode fazer praticamente tudo o que quiser: exibir caixas de diálogo, iniciar outros processos, processar vários itens, etc.

Para registrar o servidor COM em um pacote MSIX, você usa o namespace com no manifesto.. No nó com:Extensão Categoria="windows.comServer" Você declara o servidor COM, o tipo de servidor (por exemplo, Servidor substituto) e dentro de um elemento com:Class onde você indica o Id (seu CLSID) e o Caminho (a DLL que contém a implementação).

A integração com o explorador de arquivos é feita posteriormente usando a extensão windows.fileExplorerContextMenus., declarado dentro de um nó desktop4:ExtensãoDefine um ou mais desktop5:Tipo de Item (por exemplo, Diretório, * ou uma extensão específica) e, dentro, elementos desktop5:Verbo que fazem referência ao seu CLSID.

O arquivo DLL deve ser empacotado dentro do MSIX e copiado junto com o aplicativo.Se você estiver usando um projeto de empacotamento de aplicativos do Windows, a maneira mais fácil é adicionar a DLL ao projeto e marcá-la para ser sempre copiada para o diretório de saída, ou automatizar a cópia com um evento pós-compilação no projeto C++.

Após a instalação do pacote MSIX, o Explorer não carregará a nova extensão até ser reiniciado.Você pode reiniciar o computador inteiro ou encerrar o processo. explorer.exe Abra o Gerenciador de Tarefas e reinicie o computador. A partir desse momento, a nova entrada do menu de contexto aparecerá onde você a especificou.

Em conjunto, o ecossistema de extensões do Shell, ajustes no Registro e manifestos MSIX permite que você leve o Explorador de Arquivos a outro nível.Seja para organizar menus confusos, acelerar a navegação, integrar seus próprios aplicativos ou até mesmo transformar estruturas de dados complexas em "pastas" fáceis de usar, com um pouco de cuidado ao modificar o Registro e um bom planejamento das extensões COM, você pode ter um Explorador perfeitamente adaptado às suas necessidades sem sacrificar a estabilidade do sistema.

Logo 10 do Windows
Artigo relacionado:
Os melhores exploradores de arquivos para Windows 10

Adicionar como fonte preferencial