Modifica el Explorador de archivos de Windows usando Shell Extensions

  • Las extensiones de Shell permiten personalizar profundamente el Explorador, más allá de lo que ofrece el Registro.
  • Windows ofrece múltiples controladores (menú contextual, iconos, miniaturas, metadatos y espacio de nombres) para adaptar el comportamiento por archivo.
  • En Windows 11 se puede limpiar y acelerar el Explorador modificando claves del Registro para menús, panel izquierdo y plantillas de carpetas.
  • Las aplicaciones modernas empaquetadas con MSIX integran menús contextuales y servidores COM mediante extensiones declaradas en el manifiesto.

Personalizar Explorador de archivos de Windows

Si eres de los que se desesperan con menús llenos de opciones que no usas, integraciones mal hechas o lentitud al abrir carpetas, estás en el sitio adecuado.

En Windows puedes modificar el comportamiento del Explorador y del menú contextual de varias formas (incluyendo trucos del Explorador de archivos en Windows 11): mediante el Registro, con extensiones de Shell clásicas en forma de DLL, con paquetes MSIX modernos y hasta creando tus propias extensiones en .NET o C++. Vamos a recorrer todas estas posibilidades con calma, pero sin rodeos.

Qué son las extensiones de Shell y por qué el Registro se queda corto

El Shell de Windows se puede ampliar de forma básica mediante entradas del Registro y ficheros .ini. Este enfoque resulta sencillo y suele bastar para personalizar iconos por tipo de archivo, añadir algún comando extra o asociar extensiones. Sin embargo, tiene una limitación importante: todo lo que definas se aplica a nivel de tipo de archivo, no de archivo individual.

Un ejemplo típico es el de los iconos personalizados por extensión: si en el Registro asignas un icono a los .docx, todas las copias de ese tipo de archivo verán el mismo icono, aunque quieras distinguir unos de otros. Y hay áreas del Shell, como la hoja de propiedades que aparece al hacer clic derecho y elegir Propiedades, que simplemente no se pueden modificar solo con claves de Registro.

Para controlar de verdad el Explorador necesitas dar un paso más y usar controladores de extensión de Shell (shell extensions handlers). Estos son componentes COM (normalmente DLL) que el Shell invoca cada vez que va a realizar una acción determinada: mostrar un icono, desplegar el menú contextual, renderizar una miniatura, enseñar un tooltip, etc. El Explorador consulta al controlador justo antes de ejecutar la operación, dándole la oportunidad de cambiar el resultado.

Un caso muy común es el controlador de menú contextual. Si creas uno para un tipo de archivo, Windows lo invocará cada vez que hagas clic derecho sobre cualquier fichero de ese tipo. Ese componente puede añadir elementos de menú distintos en función del archivo concreto, del número de elementos seleccionados, de la ruta, etc., algo imposible de lograr solo con una simple asociación de comandos en el Registro.

En esta familia de controladores hay dos grandes grupos: los que están ligados a tipos de archivo concretos (y actúan “por archivo”) y los que se ejecutan en operaciones generales del Shell (sin depender de una extensión en particular). Verlos con cierto detalle te ayuda a entender hasta dónde puedes llegar.

Extensiones de Shell en Windows

Principales controladores asociados a tipos de archivo

Los controladores ligados a tipos de archivo te permiten personalizar el comportamiento del Explorador para extensiones concretas. Funcionan a nivel de fichero individual, así que puedes adaptar menús, iconos o propiedades dependiendo de cada elemento.

  • Controlador de menú contextual. Se ejecuta justo antes de mostrar el menú contextual de un archivo. Permite añadir comandos adicionales, reorganizar elementos y mostrar opciones solo para determinados ficheros o situaciones (por ejemplo, si hay varios archivos seleccionados, si es una carpeta especial, etc.).
  • Controlador de datos (Data Handler). Entra en juego en operaciones de arrastrar y soltar sobre objetos del Shell. Puede aportar formatos adicionales del Portapapeles para que el destino tenga más información (por ejemplo, una representación alternativa en formato XML o binario).
  • Controlador de colocación (Drop Handler). Se invoca cuando arrastras o sueltas datos sobre un archivo concreto. Sirve para que un archivo actúe como destino de una operación de drag & drop, por ejemplo, dejando caer varios ficheros sobre un archivo .zip o sobre una base de datos.
  • Controlador de iconos (Icon Handler). Se llama antes de que el Shell muestre el icono de un fichero. Permite sustituir el icono genérico de un tipo por uno generado “a medida” para cada archivo, muy útil en elementos como imágenes, documentos de proyectos, estados de sincronización, etc., y para esto conviene revisar las mejores extensiones para el Explorador.
  • Controlador de hoja de propiedades. Se activa cuando vas a mostrar el cuadro de diálogo Propiedades de un objeto. Puedes usarlo para agregar pestañas adicionales o reemplazar algunas de las existentes, de modo que tu aplicación exponga su configuración directamente en la ficha de propiedades del archivo.
  • Controlador de miniaturas (Thumbnail Handler). Genera la imagen que ves en la vista en miniatura del Explorador. Es lo que permite que un archivo de vídeo muestre un fotograma representativo o que un formato de imagen poco común tenga vista previa sin depender de aplicaciones externas.
  • Controlador de recuadro informativo (InfoTip Handler). Se utiliza para generar el texto emergente (tooltip) que aparece cuando dejas el ratón sobre un archivo. Aquí puedes mostrar metadatos relevantes: duración de un audio, resolución de una foto, estado de un documento, etc.
  • Controlador de metadatos. Proporciona acceso de lectura y escritura a las propiedades almacenadas dentro de un archivo. Gracias a él puedes ampliar la vista de Detalles, la información de tooltips, las agrupaciones y las columnas adicionales con metadatos personalizados.

Otros controladores de Shell no ligados a un tipo de archivo

Además de los controladores que dependen de un tipo de archivo, existen otros que el Shell invoca antes de ciertas operaciones generales del Explorador. Son los que dan el salto a personalizaciones de más alto nivel.

  • Controlador de columnas. Se consulta antes de mostrar la vista Detalles de una carpeta. Sirve para añadir columnas personalizadas (por ejemplo, “Rating”, “Autor interno”, “Estado de validación”) que se llenan con información calculada por tu extensión.
  • Controlador de enlace de copia (Copy Hook Handler). Se invoca cuando el sistema va a mover, copiar, eliminar o renombrar una carpeta o impresora. Permite aprobar o bloquear esa operación, muy útil en soluciones de seguridad, políticas corporativas o carpetas supervisadas.
  • Controlador de arrastrar y colocar (Drag & Drop Handler contextual). Se llama cuando arrastras un archivo con el botón derecho del ratón. Puede modificar el menú contextual que aparece al soltar, incorporando acciones especiales como “Convertir y mover”, “Subir y borrar original”, etc.
  • Controlador de superposición de iconos (Icon Overlay Handler). Añade una pequeña marca sobre el icono de un archivo o carpeta (por ejemplo, el check verde de sincronizado o un signo de exclamación). El Shell lo invoca justo antes de pintar el icono, y tu código decide qué superposición aplicar.
  • Controlador de búsqueda. Se usa para lanzar motores de búsqueda personalizados integrados en el propio Shell. Gracias a él puedes exponer un motor de búsqueda propio accesible desde el menú Inicio o desde el Explorador, que trabaje sobre datos remotos o estructuras no estándar.

Menú contextual y extensiones del Explorador

Extensiones de espacio de nombres: carpetas virtuales en el Explorador

El Explorador de Windows no solo enseña el sistema de archivos tradicional; en realidad refleja un “espacio de nombres” completo que incluye carpetas virtuales como la Papelera de reciclaje, Bibliotecas o impresoras. Con una extensión de espacio de nombres puedes enganchar cualquier cuerpo de datos y presentarlo como si fuera una carpeta normal.

Cuando creas una extensión de espacio de nombres, el Explorador muestra tus datos como una jerarquía de carpetas y archivos, aunque realmente estén en una base de datos, en un dispositivo remoto o sean simples enlaces lógicos (como ocurre con las impresoras). Para el usuario, se comporta igual que cualquier otra carpeta: puede copiar, mover, borrar, ver propiedades e incluso lanzar búsquedas.

Técnicamente, cada carpeta visible en el Explorador está representada por un objeto COM llamado “folder object”. Cuando el usuario interactúa con esa carpeta o con su contenido, el Shell habla con dicho objeto a través de interfaces estándar como IShellFolder. El objeto responde a las peticiones (listar elementos, devolver iconos, nombres, atributos…) y el Shell actualiza la interfaz gráfica.

Este modelo es especialmente útil cuando tus datos no encajan bien en la estructura de archivos y carpetas estándar. Piensa en una base de datos que quieres navegar como si fueran carpetas, en el contenido de una cámara digital sin sistema de archivos Windows o en una colección de objetos puramente lógicos (por ejemplo, trabajos de impresión en cola).

Una extensión de espacio de nombres se divide, a grandes rasgos, en dos partes: un gestor de datos (cómo y dónde guardas la información, a tu gusto) y una capa de interfaz con el Explorador que empaqueta esos datos como carpetas y archivos. Esta segunda pieza es la que implementa las interfaces COM para que DefView (la vista de carpeta por defecto) y el resto del Shell sepan cómo mostrar y manipular el contenido.

Cómo interactúan las vistas del Explorador con una extensión

La ventana del Explorador se compone de varias áreas: vista de árbol, vista de carpeta, barras de menús y herramientas y barra de estado. Cuando entras en una carpeta gestionada por tu extensión de espacio de nombres, tu código puede influir en todas ellas, aunque en grados distintos.

La vista de árbol muestra una visión de alto nivel de la jerarquía. Hospeda un control TreeView que enseña cada carpeta del espacio de nombres y su posición. Desde aquí el usuario puede desplegar niveles, arrastrar carpetas, usar el menú contextual o abrir subcarpetas. El Explorador se comunica sobre todo mediante IShellFolder, pidiendo atributos, enumerando subcarpetas, solicitando nombres a mostrar e iconos.

La vista carpeta (el panel derecho con los archivos) es aún más flexible. A diferencia de la vista de árbol, el Explorador no controla directamente su contenido; simplemente crea una ventana hija y se la cede a tu objeto folder. Esa ventana puede hospedar un ListView clásico, un control de navegador web con HTML dinámico o cualquier otra cosa que tenga sentido para tus datos.

Lo habitual es reutilizar DefView mediante la función SHCreateShellFolderView, que te da la vista estándar con iconos, detalles, ordenación, grupos, etc., y tú te centras en proporcionar los datos. Sin embargo, si necesitas una presentación muy particular, puedes hacer una vista completamente personalizada.

Las barras de menús y herramientas del Explorador se pueden personalizar desde tu extensión. El shell expone la interfaz IShellBrowser, que te permite añadir o quitar botones y elementos de menú, o reaccionar a comandos concretos. Cuando el usuario hace clic en un botón personalizado, el Explorador reenvía el mensaje WM_COMMAND a tu ventana para que proceses la acción.

La barra de estado es otro canal muy útil. Desde el mismo IShellBrowser puedes actualizar el texto para mostrar información contextual sobre el objeto seleccionado, el número de elementos, errores de tu extensión, etc., mejorando así la sensación de integración con el sistema.

Crear extensiones para el Explorador con una librería de clases .NET

Si desarrollas en .NET, existe la posibilidad de usar una librería con clases base para simplificar la creación de muchas de estas extensiones. La idea es muy directa: creas un proyecto de librería de clases, añades una clase COM y la haces heredar de la clase base que corresponda al tipo de extensión que quieras implementar.

Por ejemplo, BrowserHelperObjectBase te facilita la creación de Browser Helper Objects para Internet Explorer, mapeando métodos, eventos y propiedades del navegador hacia tu código. Expones cosas como la instancia de IE (propiedad InternetExplorer), la ventana en la que corre el objeto (Site) y manejas eventos como OnConnection u OnDisconnection.

ContextMenuHandlerBase simplifica la creación de menús contextuales para el Explorador. Solo tienes que rellenar la colección MenuItems con objetos MenuItem, como harías en un formulario Windows Forms, y engancharte al evento Click de cada opción. La propiedad Files te da la lista de archivos seleccionados, y el método OnMenuSelected sirve para actualizar el texto de ayuda de la barra de estado.

Con DropHandlerBase implementas manejadores de drag & drop asociados a un archivo. Dispones de propiedades como Filename (el destino sobre el que se sueltan archivos) y Files (los arrastrados), y de métodos como OnDragEnter, OnDragOver, OnDragLeave y OnDragDrop para reaccionar a cada fase del arrastre.

IconHandlerBase te permite devolver el icono que mostrará el Explorador para cada archivo. Desde OnGetIconLocation decides dónde está el icono y en OnExtractIcon devuelves los manejadores de icono concretos, pudiendo generar miniaturas o representaciones avanzadas.

El registro de estas extensiones .NET se hace vía COM usando regasm.exe. Las clases base incluyen métodos marcados con ComRegisterFunction y ComUnregisterFunction que se encargan de crear o eliminar las entradas adecuadas en el Registro cuando registras el ensamblado. Además, muchas de estas clases admiten el atributo ExtensionFileTypes para indicar a qué tipos de archivo afectan (puede ser una lista separada por comas o el comodín * para todos).

Reemplazar o modificar el shell (explorer.exe) a nivel de sistema

Otra forma de “tocar” el entorno de Windows de forma radical es cambiar el shell por defecto, es decir, el programa que se inicia al hacer login. En sistemas de propósito único (kioskos, dispositivos industriales, terminales) a veces no quieres que Explorer se ejecute, sino una única aplicación a pantalla completa; si necesitas otras opciones consulta alternativas al Explorador de Windows.

En entornos Windows Server y también en cliente, este comportamiento se controla a través del Registro, en la clave HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell. Sustituyendo el valor por la ruta de tu ejecutable consigues que al iniciar sesión se cargue tu programa en lugar del Explorador clásico.

La precaución aquí es clara: desactivar explorer.exe como shell deja sin escritorio, barra de tareas y ventanas de carpeta al usuario final, así que es una opción pensada para sistemas cerrados. Además, conviene que tengas siempre un método alternativo de administración y recuperación (RDP, modo seguro, GPO, etc.).

Personalizar el Explorador de archivos de Windows 11 desde el Registro

Más allá de las extensiones COM, muchos usuarios quieren simplemente quitar opciones molestas del menú contextual o recuperar el comportamiento clásico. En Windows 11, el rediseño del menú de clic derecho y la integración de funciones como Copilot ha generado bastantes críticas, sobre todo entre usuarios avanzados.

Lo primero que tienes que tener en cuenta es que tocar el Registro no es una broma. Un cambio mal hecho puede desestabilizar el sistema, así que antes de nada crea un punto de restauración o una copia de seguridad del Registro. Y, por supuesto, asegúrate de copiar las rutas exactamente como están indicadas.

Para abrir el Editor del Registro basta con escribir “regedit” en el menú Inicio y lanzar el Editor de Registro. Desde ahí podrás navegar por cada rama que vamos a citar y crear claves, valores de cadena o DWORD según convenga.

Quitar “Preguntar a Copilot” y otras entradas del menú contextual

Si tienes instalada la aplicación o integración de Copilot en Windows 11, al hacer clic derecho sobre un archivo seguramente verás la opción “Preguntar a Copilot”. Esta entrada ocupa espacio en el menú y, si no usas la función, solo estorba.

Para desactivarla desde el Registro navega hasta HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Shell Extensions. Dentro de esta rama crea una nueva clave llamada Blocked. Una vez dentro, añade un nuevo valor de cadena cuyo nombre será {CB3B0003-8088-4EDE-8769-8B354AB2FF8C} y deja el contenido en blanco.

El mismo truco sirve para limpiar otras opciones como “Editar con el Bloc de notas”, Paint o Clipchamp. Siempre trabajando bajo la rama HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Shell Extensions y dentro de la clave Blocked, puedes crear distintos valores de cadena:

  • {CA6CC9F1-867A-481E-951E-A28C5E4F01EA} para ocultar “Editar con el Bloc de notas”.
  • {8BCF599D-B158-450F-B4C2-430932F2AF2F} para eliminar la opción de Clipchamp.
  • {2430F218-B743-4FD6-97BF-5C76541B4AE9} para quitar la integración de Paint.

Una vez creados estos valores, reinicia el Explorador o el equipo para que Windows recargue la configuración. Para revertir cualquiera de ellos, basta con borrar el valor correspondiente o la clave completa Blocked si quieres recuperar todas las entradas.

Recuperar el menú contextual clásico de Windows 10

Uno de los cambios más comentados de Windows 11 es el nuevo menú contextual simplificado. No es que sea “malo” en sí, pero muchos usuarios veteranos echan de menos el menú completo de Windows 10, con todas las opciones a la vista sin tener que pulsar “Mostrar más opciones”.

Para volver al estilo clásico puedes usar otra pequeña modificación en el Registro. Dirígete a HKEY_CURRENT_USER\SOFTWARE\CLASSES\CLSID (ojo, no lo confundas con la rama .cls) y crea una nueva clave con el nombre {86ca1aa0-34aa-4e8b-a509-50c905bae2a2}.

Dentro de esta clave recién creada añade otra llamada InprocServer32. En el panel derecho, haz doble clic sobre el valor (Predeterminado) y asegúrate de que el campo de datos está completamente vacío. Acepta los cambios y cierra el editor.

Después de reiniciar el PC, al hacer clic derecho sobre archivos o carpetas verás el menú contextual tal y como aparecía en Windows 10, con todas las opciones tradicionales al instante. Si decides volver al comportamiento original de Windows 11, bastará con eliminar esta clave CLSID (y su subclave InprocServer32).

Mejorar el rendimiento del Explorador ajustando la vista de carpetas

El Explorador de archivos puede volverse bastante lento si Windows intenta aplicar plantillas de carpeta específicas a cada ruta (por ejemplo, “Imágenes”, “Vídeos”, “Documentos”, etc.) y tiene que analizar el contenido para decidir qué vista usar. En equipos con muchos ficheros o discos mecánicos se nota especialmente.

Un truco para agilizar la navegación es decirle al sistema que trate todas las carpetas como genéricas, de manera que el análisis sea más directo. Esto se consigue en la clave HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\Bags\AllFolders\Shell.

Dentro de esta clave crea un valor de cadena llamado FolderType y asigna como contenido NotSpecified. Guarda los cambios y reinicia el equipo o cierra sesión y vuelve a entrar.

Cuando vuelvas a abrir el Explorador notarás que cambiar de carpeta es más fluido, sobre todo si sueles moverte por rutas con miles de archivos o con mezclas de tipos muy variadas. No es magia, pero ayuda a recortar segundos aquí y allá. Este ajuste es especialmente útil si Explorer va lento.

Integración del Explorador con aplicaciones empaquetadas en MSIX

Hasta ahora hemos hablado sobre todo de extensiones registradas directamente en el Registro, que es el enfoque clásico usado por instaladores MSI o ClickOnce. Estas tecnologías crean claves en distintas ramas del Registro para registrar menús contextuales, asociaciones de archivos y demás.

Con aplicaciones empaquetadas en MSIX la película cambia. El Registro se virtualiza para la app y ya no puedes depender de él para registrar extensiones del Explorador. En su lugar, debes usar las extensiones de paquete definidas en el manifiesto del paquete (Package.appxmanifest), donde declaras asociaciones de tipos de archivo, verbos de menú contextual y servidores COM.

La forma más sencilla de integración con el Explorador en MSIX es la extensión windows.fileTypeAssociation. Declaras qué tipos de archivo soportas (por ejemplo, .foo), qué parámetros recibe tu ejecutable cuando el usuario abre uno de esos archivos y qué verbos adicionales aparecerán en el menú contextual (por ejemplo, “Cambiar tamaño del archivo”).

El elemento FileTypeAssociation define el nombre lógico de la asociación y los tipos que soporta. En su atributo Parameters suele ir al menos %1, que representa la ruta del archivo seleccionado. Dentro, el elemento SupportedFileTypes enumera las extensiones concretas (.foo, .bar, etc.), y SupportedVerbs contiene los verbos que se añadirán al menú contextual con sus propios parámetros.

Hay dos limitaciones importantes de este modelo: solo puedes mostrar verbos para tipos de archivo que tu app ya tenga asociados y solo se enseñarán si tu aplicación es la predeterminada para ese tipo. Además, el verbo solo puede lanzar el ejecutable principal de la app (aunque con parámetros distintos), no otro EXE arbitrario.

Extensiones de Shell COM avanzadas en paquetes MSIX

Si necesitas ir más allá (controlar carpetas genéricas, lanzar otras tareas o no abrir la app principal cada vez), la opción es crear una extensión de Shell COM clásica (DLL) y registrarla dentro del manifiesto MSIX, en lugar de usar el Registro del sistema.

Una extensión de Shell COM es, básicamente, una DLL que expone una o varias clases COM con un CLSID único. Windows carga esta DLL cuando el Explorador necesita mostrar el menú contextual, iconos, miniaturas, etc., y llama a métodos como GetTitle, GetIcon, GetTooltip o Invoke (en el caso de comandos del menú).

La implementación típica se hace en C++ por rendimiento y consumo de memoria. Un ejemplo clásico es un proyecto similar a “ExplorerCommandVerb”, donde la clase CExplorerCommandVerb implementa el comando de menú. El método Invoke es el que se ejecuta cuando el usuario pulsa tu entrada en el menú contextual, y desde ahí puedes hacer prácticamente lo que quieras: mostrar cuadros de diálogo, lanzar otros procesos, procesar varios elementos, etc.

Para registrar el servidor COM en un paquete MSIX utilizas el espacio de nombres com en el manifiesto. En el nodo com:Extension Category=»windows.comServer» declaras el servidor COM, el tipo de servidor (por ejemplo, SurrogateServer) y dentro un elemento com:Class donde indicas el Id (tu CLSID) y el Path (la DLL que contiene la implementación).

La integración con el explorador de archivos se hace después mediante la extensión windows.fileExplorerContextMenus, declarada dentro de un nodo desktop4:Extension. En él se definen uno o varios desktop5:ItemType (por ejemplo, Directory, * o una extensión concreta) y, dentro, elementos desktop5:Verb que referencian tu CLSID.

El archivo DLL debe ir empaquetado dentro del MSIX y copiarse junto con la app. Si usas un Proyecto de Empaquetado de Aplicaciones de Windows, lo más cómodo es añadir la DLL al proyecto y marcarla para que se copie siempre al directorio de salida, o bien automatizar la copia con un evento posterior a la compilación en el proyecto C++.

Tras instalar el paquete MSIX, el Explorador no cargará la nueva extensión hasta que se reinicie. Puedes reiniciar el equipo entero o matar el proceso explorer.exe desde el Administrador de tareas y volverlo a iniciar. A partir de ese momento, la nueva entrada de menú contextual aparecerá donde la hayas declarado.

En conjunto, el ecosistema de extensiones de Shell, ajustes de Registro y manifiestos MSIX permite llevar el Explorador de archivos a otro nivel, ya sea para limpiar menús molestos, acelerar la navegación, integrar tus propias aplicaciones o incluso convertir estructuras de datos complejas en “carpetas” navegables para el usuario. Con algo de cuidado al tocar el Registro y una buena planificación de las extensiones COM, puedes tener un Explorador perfectamente adaptado a tus necesidades sin renunciar a la estabilidad del sistema.

Windows 10 Logo
Artículo relacionado:
Los mejores exploradores de archivos para Windows 10

Añadir como fuente preferida en Google