Erwin.Ried.cl / Documentos / Windows /
El control total sobre el menú contextual

¿Nunca imprimes un documento sin abrirlo?, ¿Nunca creas un archivo comprimido desde el menú "nuevo" y añades archivos al archivo?, ¿Al hacer clic secundario sobre un video o una canción se tarda demasiado para solo mostrar miles de opciones inútiles?. Este artículo es para tí. (15/06/2010 02:52 AM)


Seguramente has visto la multitud de opciones que se añaden al menú contextual (el que aparece al hacer clic secundario) en los diferentes tipos de archivos. Como por ejemplo, un documento de Microsoft Word tiene originalmente opciones para abrirlo, imprimirlo, editarlo, crear uno nuevo y más aún si cuentas con más aplicaciones instaladas apareceran opciones como convertirlo a formatos como pdf. Quizas utilizas estas funciones y eso está bien, ¿pero que pasa si no lo haces?, nunca te dieron la opción de elegir si las querías o no, relentiza tu equipo con millones de opciones diferentes para cada archivo y en donde muchas veces varias de ellas hacen lo mismo como por ejemplo abrir, modificar y editar muchas veces realizan la misma tarea.

Actualización
15-06-2010: Añadidas nuevas claves "especiales" en el punto 3, sección D


Además cuando quieres crear una nueva carpeta o acceso directo, el menú "nuevo" demora varios segundos en aparecer y muestra muchos tipos de archivos cuando sólo utilizas unos pocos. Mi idea es mostrarte como solucionar estos problemas, la base de los mismos radica en un elemento llamado registro.

El registro de Windows es odiado y amado. He escuchado de que algunas distribuciones de Linux han pensado en la inclusión de una especie de base de datos de configuraciones, tal como lo hace el registro principalmente debido a la eficiencia que entrega y la facilidad que otorga a los programadores.

Contenidos
1. Introducción
2. Funcionamiento básico de las clases
3. Quitando elementos del menú contextual
4. La creación de un nuevo archivo
5. Cuando las aplicaciones vuelven a la carga
6. El disco duro tozudo
7. Conclusiones


El mismo registro no es mágico, su contenido se encuentra en archivos protegidos del computador que pueden ser accesados por interfaces como el editor del registro o más conocido como Regedit.

Gracias al registro, Windows accede de manera relativamente eficiente a configuraciones y parámetros del sistema y de los programas, inclusive hay una rama del registro que es personal para cada usuario y se carga dependiendo del inicio de sesión que se utilice. Sin embargo, debido a multiples razones, el registro puede llegar a contener millones de datos inservibles y dado que las aplicaciones lo utilizan, pero no forman parte, muchos de estos datos son residuales. Entender el registro es una tarea casi imposible, en especial si tratamos de entender el funcionamiento de las clases de archivos, una de las ramas más importante que le dice al sistema como tratar cada archivo.

Atención
Es importante advertir que cualquier modificación indebida al registro fácilmente deja el equipo inutilizable, por lo que debe ser editado bajo su propia responsabilidad



1. Introducción al editor del registro (Arriba)

Como el registro no puede ser editado directamente con un editor básico como ocurre con otros archivos de configuración como los archivos ".ini", debemos conocer el editor de registro de Windows. Para llamarlo, simplemente ejecutamos Regedit.exe del directorio raíz del sistema o escribimos Regedit desde Inicio/Ejecutar.

En el panel de la izquierda del editor del registro vemos un arbol de las llamadas "Claves". Una clave es como una carpeta de opciones, y dentro de una pueden coexistir muchas otras aunque el nombre de ellas debe ser única.

Si seleccionamos una clave, en el panel de la derecha veremos los valores que contiene. Probablemente si elegimos una de las claves principales sólo veremos el valor predeterminado, valor siempre existente. En este artículo nos enfocaremos en la clave señalada como HKEY_CLASSES_ROOT en la lista.


2. Funcionamiento básico de las clases (Arriba)

El siguiente esquema que elaboré muestra de manera general el funcionamiento de las clases (las partes principales), el cual supone la relación de una extensión con un tipo de archivo el cual define propiedades generales de esa extensión.



Los controles dinámicos están definidos por un tipo de dato especial, el cual es un identificador único. Este identificador tiene una estructura basada en el siguiente patrón:

Código:
{00000000-0000-0000-0000-000000000000}


En ciertas ocasiones deberemos saber identificar este tipo de relaciones por medio de identificadores, pues hay algunos archivos que relacionan funciones de esta forma. La explicación detrás de todo esto es que esta es la forma más simple de relacionar librerías con aplicaciones sin que las aplicaciones deban descubrir por sí mismos la ruta original del archivo que contiene la librería, así, solo hacen referencia a su identificador.


3. Quitando elementos del menú contextual (Arriba)

Hay varias opciones que tenemos para realizar esta tarea. A veces debemos utilizar varias de ellas para lograr lo que deseamos. Explicaré cada una de las maneras independientemente en los siguientes pasos:

A. Eliminación segura

Aunque es la menos efectiva, probablemente en la mayorías de las veces sea efectiva, y en ninguna instancia puede llegar a ser dañina.

Pensemos en que deseamos eliminar la opción "Imprimir" de nuestro tipo de archivo imaginario ".texto", vamos a "Opciones de carpeta" en el menú de herramientas de cualquier carpeta:



Dentro de "tipos de archivo", buscamos nuestro tipo de archivo buscado:



Seleccionamos el tipo de archivo, presionamos opciones avanzadas y quitamos los elementos que no deseamos del menú contextual:



Cabe resaltar que el editor proporcionado por Windows edita el tipo de archivo, sin embargo, muchas veces varios tipos de archivos hacen referencia a la misma extensión por lo que debemos guardar los cambios y volver a editar la misma extensión en donde probablemente aparecerán nuevamente los elementos que han sido eliminados.

Para comprobar la verdadera efectividad de esto que acabamos de hacer, iniciamos la aplicación que creo estos elementos del menú contextual y revisamos si estos elementos volvieron a aparecer.


B. Eliminación segura, alternativa

Como alternativa, se pueden utilizar aplicaciones para modificar el menú contextual. Hay una herramienta llamada Lopesoft FileMenuTools que permite modificar y añadir opciones, aunque no permite modificar independientemente elementos por tipo de archivo como ContextEdit, aplicación incluída en Avatar Utilities 2005.


C. Eliminación segura y masiva

Cada vez que instalamos una nueva aplicación, a veces sin querer instalarla (como por ejemplo cuando Microsoft Office detecta que necesita repararse por cualquier motivo, aunque, personalmente comprobé que en la versión de Office 2007 ya no sucede eso de las reparaciones "repentinas") muchas de nuestras configuraciones al menú contextual se pierden (por ejemplo yo borro siempre los elementos "Nuevo", "Abrir como sólo lectura", "Imprimir", "Modificar" de los archivos de la suite ofimática). Para evitar tener que realizar todo el trabajo nuevamente, lo más facil es crear un archivo ".cmd" con la lista de instrucciones que generalmente borramos e ir añadiendo cada vez más instrucciones no deseadas, lamentablemente hasta que los desarrolladores de aplicaciones entiendan que NO TODOS LOS USUARIOS DESEAMOS TENER TODO EN EL MENÚ CONTEXTUAL, un ejemplo de este archivo (para eliminar las opciones de "Nuevo" de la mayoría de archivos relacionados con Microsoft Word) puede ser:

Código:
@echo off
reg delete "HKCR\Word.Backup.8\shell\New" /f
reg delete "HKCR\Word.Document.12\shell\New" /f
reg delete "HKCR\Word.Document.8\shell\New" /f
reg delete "HKCR\Word.DocumentMacroEnabled.12\shell\New" /f
reg delete "HKCR\Word.RTF.8\shell\New" /f
reg delete "HKCR\Word.Template.12\shell\New" /f
reg delete "HKCR\Word.Template.8\shell\New" /f
reg delete "HKCR\Word.TemplateMacroEnabled.12\shell\New" /f
reg delete "HKCR\Word.Wizard.8\shell\New" /f
...



D. Librerías contextuales

Algunas aplicaciones insertan librerías dinámicas que añaden el menú contextual. Aplicaciones como por ejemplo Windows Media Player mantienen cargado un dll que se encarga de añadir los elementos de "Añadir a la lista de reproducción" y otras opciones, la librería está en "Windows/System32" con el nombre de "wmpshell.dll" la cual debe ser borrada descargando explorer.exe y eliminada cualquier referencia con las instrucciones descritas en este documento.

Para aislar estos elementos debemos tener un control avanzado del registro. Para ejemplificar el proceso, les mostraré como eliminar un control que añade un editor Hexagesimal llamado Hex Workshop.

Lo primero es identificar que extensión es afectada. Hay archivos que probablemente no tengan extensión, como las carpetas, directorios de archivos, accesos directos, sin embargo son tratados como tipos de archivos en el registro con los nombres de Folder, Directory y lnkfile asociado a la extensión .lnk respectivamente.

El menú contextual objetivo es el siguiente:



Aparece cuando seleccionamos cualquier archivo, exceptuando las carpetas, es decir los archivos con extensión "*". Vamos al registro a revisar esto:



Hay diversas "extensiones" que tienen tipos de archivos especiales. En realidad no son extensiones (hay casos en que son extensiones pero con un parámetro llamado "NeverShowExt", para nunca mostrar la extensión aún cuando el sistema está configurado a mostrarlas), pero el sistema los maneja de forma especial, algunas de sus claves son:

Código:
HKEY_CLASSES_ROOT\* (Todos los archivos, no directorios)
HKEY_CLASSES_ROOT\.lnk (Accesos directos)
HKEY_CLASSES_ROOT\AllFilesystemObjects (Todos los objetos)(1)
HKEY_CLASSES_ROOT\AudioCD (Disco de audio)(5)
HKEY_CLASSES_ROOT\callto (Protocolo de internet)(2)
HKEY_CLASSES_ROOT\Directory (Carpetas con archivos)
HKEY_CLASSES_ROOT\Drive (Unidad)
HKEY_CLASSES_ROOT\exefile (Ejecutables)(4)
HKEY_CLASSES_ROOT\file (Protocolo de archivos por medio de IEFRAME)(2)
HKEY_CLASSES_ROOT\FileType (Tipos de archivos)
HKEY_CLASSES_ROOT\Filter (Filtros del sistema, video, sonido, etc)
HKEY_CLASSES_ROOT\Folder (Carpetas, en general)
HKEY_CLASSES_ROOT\http (Protocolo de internet)(2)
HKEY_CLASSES_ROOT\https (Protocolo de internet)(2)
HKEY_CLASSES_ROOT\mailto (Protocolo de correo)(3)
HKEY_CLASSES_ROOT\pop (Protocolo de correo)(2)
HKEY_CLASSES_ROOT\Unknown (Extensión desconocida)
HKEY_CLASSES_ROOT\device (Dispositivo genérico)
HKEY_CLASSES_ROOT\DVD (Película en dvd)

(1) Se utiliza para comandos globales como "Enviar a"
(2) Existen varios más especificados en el registro
(3) Administra el comando "mailto:<casilla>"
(4) No está solamente asociado a ".exe"
(5) Generalmente utilizadas en la reproducción automática


Existen también, algunas claves "especiales" que hacen las veces de contenedores (principalmente de identificadores de librerías, aplicaciones, componentes, etc):

Código:
HKEY_CLASSES_ROOT\AppID
HKEY_CLASSES_ROOT\Applications
HKEY_CLASSES_ROOT\CID
HKEY_CLASSES_ROOT\CLSID
HKEY_CLASSES_ROOT\Interface
HKEY_CLASSES_ROOT\MIME
HKEY_CLASSES_ROOT\SystemFileAssociations
HKEY_CLASSES_ROOT\TypeLib


Es importante considerar que las mismas claves "especiales" pueden estar en HKEY_CURRENT_USER\Software\Classes, por ejemplo HKEY_CURRENT_USER\Software\Classes\Applications y también HKEY_LOCAL_MACHINE\SOFTWARE\Classes

Si indagamos dentro de la clave ShellEx encontramos controladores de panel de propiedades (esos que añaden pestañas a las propiedades de archivos como el de compresión de Winrar y el de propiedades del pdf de Adobe Acrobat) y controladores de menú contextual. Dentro está nuestro objetivo:



Sin embargo, cuando lo seleccionamos descubrimos que sólo contiene la siguiente información dentro:



Bueno, esto es lo que les explicaba al comienzo. Esto es un identificador único de la librería. Para descubrir a la verdadera librería tras esta máscara, buscamos la secuencia en el editor del registro:



Fíjense en las opciones utilizadas, sólo buscar claves con valores completos. Así optimizamos la búsqueda que en ocasiones puede tardar un par de minutos.

El resultado de la búsqueda se ve claro a continuación:



Dentro de esta clase con valor predeterminado "Hex Workshop Shell Extension" (lo que nos asegura aún mas que hemos encontrado la clave), encontramos la referencia de la clave "InProcServer32" al archivo buscado:



Simplemente debemos eliminar esta librería y nos libraremos del menú contextual. Para eliminarla (o simplemente renombrarla) hay que cerrar explorer.exe (y trabajar sólo con la consola de Windows) desde el Administrador de tareas, en procesos y utilizar la consola de comandos. Puede que podamos deshabilitar la extensión simplemente invocando el comando "regsvr32 /u <ruta y nombre>" con la información de la librería.




E. De extensión a tipo maestro

Algunas veces un tipo de archivo tiene varias extensiones. Por ejemplo una imagen puede tener extensión ".jpg" y ".jpeg", pero compartir todas las demás propiedades, como el nombre del tipo de archivo que se muestra en el explorador de Windows, los comandos "Abrir", "Editar", entre otros.

En estas situaciones lo mejor no es colocar todos estos parámetros directamente en la clave de la extensión, sino asociar esta extensión con un tipo de archivo maestro. En este caso simplemente basta modificar esa clave de tipo archivo maestro:



Para dejar más claro este aspecto, en la siguiente imagen se puede apreciar el tipo de archivo maestro de las extensiones ".jpg" y ".jpeg" están relacionados con "jpegfile" el cual tiene todos los comandos y propiedades comunes de ambos:



Nota
Las claves "Content Type" y "PerceivedType" funcionan de una forma similar a la mostrada en este punto, pero se relacionan con el tipo de contenido y la aplicación o aplicaciones que lo manejan como se ve en el siguiente punto


Aunque el tipo de archivo maestro puede verse claramente dentro del editor del registro, también hay un comando en la consola de Windows para este propósito:

Código:
ASSOC <.extensión>=<"tipo de archivo maestro">


El comando llamado con los todos los parámetros modificará el tipo de archivo maestro para la .extension. Alternativamente, se puede ver la lista completa de extensiones vs. tipos de archivo escribiendo "ASSOC" sin parámetros, consultar el tipo de archivo de una extensión escribiendo "ASSOC .extensión" y finalmente eliminar la asociación con un tipo de archivo escribiendo "ASSOC .extensión=".

Por defecto, Windows crea tipos de archivos maestros para las asociaciones de archivo creadas por el usuario utilizando el siguiente formato:

Código:
ftN (filetypeN)

en donde N es un entero positivo de seis dígitos, 
como por ejemplo:

ft000001
ft000002
...


Externamente esta peculiaridad pasa desapercibida por el usuario, pues al crear una nueva asociación con una extensión de archivo podemos elegir el tipo de archivo asociado usando el nombre para mostrar que escribimos en la descripción (que internamente tendrá el nombre de clave anterior) desde opciones avanzadas:



Relacionado con este aspecto también tenemos un tipo de archivo genérico el cual se crea cuando es el sistema el que crea la extensión (generalmente desde el dialogo "Abrir con...", cuando se define que siempre se debe usar ese programa para abrir el archivo):

Código:
EXT_auto_file

en donde EXT es la extensión relacionada, 
generalmente de tres o más dígitos, por ejemplo:

wav_auto_file
jpeg_auto_file
...



F. Extensión a tipo, y de tipo hasta aplicación

En ciertas ocasiones, una extensión tiene asociado un tipo de archivo, pero este tipo no tiene el menú contextual, ni una librería dinámica que lo agregue. Entonces en este caso probablemente se trate de otro tipo de relación.

Esta relación es de extensiones por aplicación, es decir, el menú contextual se le referencia a la aplicación (archivo ejecutable) y no al tipo de archivo, como es el caso del visor de fotos de Windows, o el Bloc de notas. En estos últimos dos ejemplos, hay referencias directas a la aplicación shimgvw.dll y notepad.exe respectivamente.

Para borrar referencias de este tipo, vamos a la clave "Applications", que está en la clave de clases:



Ahí buscamos el archivo ejecutable con el que se asocia el tipo de archivo, esto está en relación con el tipo de archivo y con la extensión:



Como resumen al esquema, debemos editar las opciones contextuales de la clave "Applications", para editar el menú que aparece según el contenido.

Según el contenido, se relacionan las extensiones desde la clave de contenido que está en la rama indicada a continuación:



Curiosidad
Más de algún usuario habrá notado algunos elementos del menú Ver, Barra de explorador (de todas las carpetas en Windows XP/2003 o anterior) que son realmente antiguos, incluso con Windows XP SP2 (más aún con Internet Explorer 7 o superior) perdieron casi completamente funcionalidad:



Para quitarlos fácilmente, desde HKEY_CLASSES_ROOT/CLSID invalidan las siguientes claves (yo añadí un signo de pregunta al comienzo para anularlas):



Luego se debe reiniciar el proceso "explorer.exe" para ver los cambios. Algunos elementos pueden no estar en tu equipo según las aplicaciones que tengas instaladas o utilices (como la opción "Discusión" que es activada al usar Outlook Express). El agradable resultado:





G. La acción predeterminada

Al hacer doble clic sobre una carpeta lo lógico es que se abra en el explorador de Windows, ¿Qué cambia cuando no sucede esto?, ¿Dónde se almacenan las acciones predeterminadas que se gatillan haciendo doble clic?:



Nota
Algunos elementos del menú contextual de la imagen (como copiar ruta al portapapeles) los añadí con el excelente "FileMenu Tools" de Lopesoft


Primero, al nivel más de usuario, la acción predeterminada es la que aparece en opciones de carpeta (en la pestaña tipos de archivo) y es fácilmente modificable:



Claro que esta función es bien limitada por lo que algunas veces tendremos que modificar directamente el registro. Ahora, la acción predeterminada, vista desde el punto de las claves del registro es simplemente la que el elemento "(Predeterminado)" designa en el contenedor de las acciones, es decir viendo el caso de la extensión de la imagen anterior (.docm), vamos al registro y descubrimos que directamente no tiene ninguna clave "Shell", sin embargo está asociada a un tipo maestro:



Ahora si vemos el tipo de archivo maestro:



Vean que en "(Predeterminado)" tenemos designada la acción "open", está será la predeterminada al hacer doble clic sobre este tipo de archivo.

Todo esto está muy bien, pero a veces puede ser confuso, por ejemplo, ¿Qué sucede si alguna acción aparece como predeterminada, pero no está en la lista de acciones?:



Fíjense que "open" no está en la lista de acciones. Nunca debemos olvidar que Windows recopila gran cantidad de datos antes de mostrarnos el menú contextual, lo que sucede aquí es simplemente que la acción "open" es traspasada a un tipo heredado de "Directory", como lo es "Folder".

Importante
Muchos problemas pueden suceder por esta situación, el ejemplo más común es cuando al hacer doble clic sobre una carpeta o unidad no obtenemos un comportamiento deseado.

Para comprender la forma de funcionamiento del menú contextual especial de estos elementos debemos tener en cuenta lo especial que es este menú y sus orígenes representados en este esquema básico:



Así si por ejemplo al hacer doble clic sobre una unidad se les abre el buscador de archivos pero cuando hacen clic sobre una carpeta normal no, sabrán que deben revisar HKCR\Shell\Drive y no HKCR\Shell\Folder que es contenedor de la primera.

Lo más facil cuando se un programa corrompe las clases de archivos es rápidamente reiniciar y presionar F8 antes de que comience a cargar Windows, seleccionando "La última configuración buena conocidad". La otra posibilidad es comparar las clases ya conocidas con un computador en buenas condiciones.


Un detalle final es que cuando aparece el diálogo de "abrir con..." al hacer doble clic sobre algún archivo, es simplemente debido a que la clave "shell" del tipo de archivo y tipo de archivo madre de ese mismo tipo está vacía.



4. La creación de un nuevo archivo (Arriba)

El menú secundario nos ofrece otras opciones además de las que acabamos de revisar anteriormente. Si hacemos clic secundario sobre un área sin iconos podemos acceder a un menú señalado como "Nuevo". Desde ese menú podemos crear archivos nuevos de la nada, sin una aplicación generadora. Para archivos de texto, carpetas y accesos directos, esto es casi impresindible:



Sin embargo, ¿Cuándo desearán crear un archivo de Adobe Photoshop, o un archivo de AtlTraceTool como se ve en la imagen?

Probablemente nunca. La solución para crear la mayoría de esos archivos es simplemente abrir la aplicación que los genera, aunque pueden existir ciertas excepciones como por ejemplo los archivos comprimidos que puede ser cómodo adjuntar archivos a un archivo en "blanco".

Entonces, ¿Para que tener millones de tipos de archivos en este menú cuando con los básicos tenemos suficiente y no tenemos que esperar varios segundos para visualizar el menú completo?. La idea es lograr un menú que contenga sólo los nuevos archivos que necesitamos, en mi caso es similar al siguiente:



O al menos, uno más completo con las opciones que gustes. A diferencia de Windows 98 o ME, en Windows 2000, XP o 2003 el control de este menú se realiza por medio del registro y no de una carpeta aunque aún se conserva este método.

Los pasos para eliminar estos elementos radica en la utilización de una utilidad de unas herramientas que Microsoft entregó a sus usuarios.

La herramienta propuesta se llama TweakUI, gratuita, la cual puede ser descargada desde el sitio de Microsoft. En la opción "Templates" se pueden agregar y eliminar los elementos del menú secundario:



Como referencia, lo único que hace TweakUI es invalidar la propiedad ShellNew en el registro. En la siguiente imagen se puede observar la propiedad citada:



Para invalidar la propiedad "ShellNew" simplemente el programa añade un símbolo adelante, es decir, "ShellNew" pasa a ser "-ShellNew".

Nota
Las plantillas para los nuevos archivos que no pueden crearse como archivos sin estructura (la aplicación asociada mostraría un error al abrir un archivo de cero bytes) generalmente están en el directorio SHELLNEW, dentro de la carpeta WINDOWS



5. Cuando las aplicaciones vuelven a la carga (Arriba)

Algunas aplicaciones tienden a generar nuevamente los elemento que hemos eliminado. Por ejemplo aunque borremos la opción de "Modificar" con Microsoft Word los documentos HTML, estos vuelven a generarse cada vez que abrimos Microsoft Word.

Otro ejemplo es cuando borramos del menú "Nuevo" el elemento de "Adobe Photoshop Image", si iniciamos Adobe Photoshop (por lo menos en la versión CS y CS2 de esta aplicación) estos elementos vuelven y se generan nuevamente, Macromedia Flash MX, MX 2004 y la versión 8 de estas aplicaciones también hacen lo mismo.

Para evitar esto, administraremos los permisos del registro. Como ejemplo, demostraré la forma de prohibirle a Photoshop que reactive "ShellNew". Primero, borramos el elemento "Adobe Photoshop Image" con TweakUI. Ahora abrimos Photoshop:



Nos cercioramos que el elemento vuelva a aparecer en el menú "Nuevo":



Ciertamente el elemento volvío. Es increíble que añadan sistemas de restauración automáticos a las aplicaciones, personalmente prefiero que estas opciones se incluyan como alternativa y no como imposición, probablemente podría consultar al usuario.

Vamos al editor del registro, buscamos la extensión del archivo que genera ese "Adobe Photoshop Image" el cual es ".psd":



¿Notan la existencia de "ShellNew" en conjunto con "-ShellNew"?, TweakUI había anulado el anterior "ShellNew", el cual fue recontruído por Photoshop. Ahora quitamos todos los elementos nombrados:



A continuación establecemos los permisos de ".psd":



Vamos a "Opciones avanzadas" y luego en la ficha de "Permisos" modificamos "Administradores (Dominio)":



Debemos denegar la creación de nuevas subclaves:



Ahora hemos protegido nuestro tipo de archivo de la recuperación automatizada de las aplicaciones lo que mantendrá intacta nuestra configuración.

Nota
El denegación de permisos es generalmente invisible para el usuario y las aplicaciones, el registro genera la denegación internamente (puede apreciarse con herramientas especializadas como Regmon), pero las aplicaciones no mostrarán un error a menos que estén preparadas para hacerlo (como ciertos instaladores que van comprobando que los cambios en el registro se efectuen)


El procedimiento mostrado en los pasos anteriores puede ser el único disponible cuando las aplicaciones están diseñadas para reparar "agresivamente" las modificaciones del registro de forma automática, impidiendo que el usuario configure su equipo como desee, sin embargo hay una manera menos invasiva (aunque a veces no es tan efectiva) que consisten en crear una clave "LegacyDisable" (sin ningún valor) en lugar de reasignar los permisos.

Esta propiedad que puede ser aplicada a infinidad de elementos "activos" del registro, por ejemplo en la imagen se muestra como impedir que no se muestre la opción para crear archivos ".mp7" en el menú de "Nuevo", aún cuando la aplicación que utiliza los archivos ".mp7" genere reiteradamente la clave "ShellNew" (si la borraramos):



Nota
Alguna aplicaciones "insisten" en anular "LegacyDisable" de cualquier forma (borrando esta o creando otras claves que tienen preferencia para Windows), por lo que la opción final que queda es denegar el permiso a crear subclaves para esos registros



6. El disco duro tozudo (Arriba)

En ciertas ocasiones, el disco duro parece no responder a nuestro doble clic o funcionar incorrectamente.



Luego de leer este documento podrás comprender como configurar el elemento predefinido, en especial cuando algún programa mal intencionado ha afectado nuestro equipo, el disco duro y otros elementos pueden depender de las siguientes claves:

Código:
HKEY_CLASSES_ROOT\*
HKEY_CLASSES_ROOT\Drive
HKEY_CLASSES_ROOT\Folder
HKEY_CLASSES_ROOT\Directory
HKEY_CLASSES_ROOT\AllFilesystemObjects


Sin embargo a veces lo que sucede es que existe un archivo "autorun.inf" que afecta el comportamiento de la unidad. Por ejemplo si tenemos un disco duro o unidad de disco extraíble en "X:" con los síntomas comentados, desde la consola escribimos:

Código:
X:
attrib -s -h autorun.inf
del /f autorun.inf


Relacionado con este tema, es posible que la siguiente utilidad sirva para limpiar y corregir tu equipo:

files/articles/_public/fix_drive_brotok_1.rar

Adicionalmente
Sin tener mucha relación con el menú contextual, es importante destacar algunas claves de registro populares que son atacadas por estos "virus". Según la sesión, pueden estar en "HKCU\Software\Microsoft\Windows\Currentversion\" o "HKLM\Software\Microsoft\Windows\Currentversion\", las siguientes alteraciones:

Explorer\Advanced\ShowSuperHidden (Mostrar archivos de sistema)
Policies\Explorer\NoFolderOptions (Sin opciones de carpeta)
Policies\System\DisableRegistryTools (Deshabilitar el registro)

En donde un "0" representa falso y "1" verdadero.

Otra importante es "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell" en donde el valor debe ser únicamente "explorer.exe"



7. Conclusiones (Arriba)

Windows nos da muchas facilidades, pero para realizar tareas poco convencionales siempre hay dificultades. Sin embargo con un poco de ingenio todo puede llevarse a cabo.

En la red no había encontrado muchas formas de modificar, limpiar y mantener la integridad del menú contextual, por ese motivo me tomé el tiempo de generar este, esperando que este documento sea de utilidad para todos los usuarios que quieran alcanzar un poco de perfección en los detalles, como yo.

Haga clic sobre una de las estrellas para calificar este artículo.

Opiniones y comentarios (Escribir un nuevo comentario)
exelente tu.. directo a mis favoritos... una duda creo que no aparece o no vi como eliminar la opcion de "establecer como fondo de escritorio" cuando se pincha en una imagen o en una imagen de una pagina web. por lo demas exelente... gracias
Escrito por sergio (17/08/2010 04:35 PM)
Este documento habla principalmente del menú contextual en Windows, no sobre aplicaciones como un navegador de internet. Si el elemento que quieres quitar no aparece explícito en el registro, es probablemente un archivo DLL el que lo genera (aparece también en este artículo) y probablemente para tu caso es "shimgvw.dll"
Escrito por Erwin Ried (17/08/2010 09:15 PM)
Hola qué tal Erwin, muy buen artículo. Sucede que intenté hacer que se abriera una ventana de comandos en la carpeta en la que estuviera en el explorador de windows. Como los resultados no fueron los esperados quise revertir lo que hice, pero ahora en mi menú contextual de las carpetas me aparece primero la opción "Buscar..." seguida de "Abrir" y "Explorar". Aunque escojo "Abrir" con el botón de predeterminar el resultado sigue siendo el mismo orden. "Buscar..." no está predeterminado en su apartado correspondiente. ¿Cómo hago para cambiar el orden? De antemano muchas gracias
Escrito por Antonio (01/08/2010 11:50 PM)
Es buena pregunta pues el orden lo define Windows con el texto de la acción interna (no de la etiqueta), aunque la primera posición es siempre para la acción predeterminada. Intenta revisar otro equipo, probablemente cambiaste algo que no debias
Escrito por Erwin Ried (03/08/2010 04:53 AM)
Hola: Me gustaría saber si se puede modificar el menu contextual de la siguiente manera, hay una libreria contextual que arroja dos opciones a al menu pero solo quisiera que apareciera una de ellas no se si se peuda hacer, la libreria se llama shellex.dll, gracias.
Escrito por JJ (31/07/2010 05:56 PM)
Esa librería es de Windows. Podrías alterarla pero no es algo tan sencillo
Escrito por Erwin Ried (03/08/2010 04:54 AM)
Hola Erwin. El problema que tengo es que por alguna razón que desconozco, la opción "abrir" en el menu contextual no esta predeterminada para que funcione con el doble click . En cambio lo que esta predeterminado es "Símbolo de Sistema", entonces cuando hago doble click sobre una carpeta para que se abra, lo que se habre es una ventanita en DOS (símbolo de sistema) en vez de abrirse la carpeta. ¿Cómo hago para que la opción "Abrir" vuelva a ser la predeterminada a funcionar con el doble click?. Muchas gracias Marina
Escrito por Marina (26/07/2010 12:29 PM)
Leyendo este documento encontrarás esa respuesta
Escrito por Erwin Ried (31/07/2010 12:10 AM)
Hola Erwin: Primero que todo te felicito, ya que tu post es bastante completo y aclarador sobre un tema sumamente interesante. Es una lástima que no todo el mundo aprecie estas facilidades que ofrece Windows. Ahora, mi pregunta :P Yo soy programador, y como tal me gusta mucho trabajar con la consola de comandos. Lo que siempre extrañé en Windows fue el poder abrir la consola de comandos en la ventana en la que te encuentras trabajando, pero una vez aprendí a abrirla con el menú contextual de las carpetas. Sin embargo, con este truco, la consola se abre sobre la carpeta sobre la que hice clic con el botón derecho, pero no sobre la que estoy actualmente viendo. La pregunta básicamente es: ¿existe alguna manera de modificar los elementos que están en el menú que aparece cuando haces clic con el botón derecho sobre el escritorio o el fondo de una carpeta? De esta manera, podría abrir la consola como yo quiero :) Muchas gracias por cualquier ayuda y felicitaciones nuevamente. Saludos!
Escrito por Jorge (11/06/2010 02:06 AM)
Es posible, pero es más simple (si usas Windows Vista o 7) hacer clic secundario en un espacio libre dentro de la carpeta (o sobre la carpeta en los detalles abajo) manteniendo Mayus para obtener esa opción. Otra forma es añadiendo "cmd " adelante de la ruta que ves arriba en cada carpeta
Escrito por Erwin Ried (11/06/2010 05:40 PM)
Hola Erwin, gracias por tu articulo. Necesito deshabilitar ó editar el menu contextual que aparece pinchando con el botón derecho sobre el marco de una ventana de windows (Restaurar,mover,tamaño,minimizar,maximizar y cerrar).¿Es posible deshabilitar este menu contextual? Muchas gracias
Escrito por Jose Miguel (19/05/2010 07:29 AM)
Es posible, pero sólo editando el sistema operativo de una forma avanzada. Además es muy posible corromper otras secciones pues ese menú es compartido con la barra de tareas. Puede que tu problema tenga otra solución, si deseas puedes describirme a mi correo lo que deseas lograr para ayudarte
Escrito por Erwin Ried (23/05/2010 02:55 PM)
Hola Erwin, estuve leyendo parte de tu articulo. Tengo un problema en la maquina con la que opero en el trabajo, la cual esta en red como junto con otras 5 pcs, de las cuales 1 es la que hace de servidor, usamos un programa completo para seguir las cuentas corrientes, para el area de compras y control de stock, asi como tambien el area de ventas y facturacion. Hace unos meses que se presenta el siguiente problema: al momento de querer apagar la pc (Inicio/Apagar sistema) el sistema tarda de 3 a 5 minutos de reloj para mostrar el cartel de "Apagar- Suspender-Reiniciar" todo lo que intente para solucionar este problema no dio resultado, salvo algunas que luego de reiniciar la pc, parecian haber arreglado el problema, pero luego de unos minutos de uso, volvia al mismo problema. Otra de las cosas que aun sigo sin poder resolver es que al dar click derecho a algun archivo, tambien tarda en aparecer el menu contextual, lo cual me genera contratiempos para trabajar, tambien probe con CCleaner, Registry Mechanic, compacté el registro, probe con varias versiones del Tune Up, pero tampoco dio resultado. En caso de necesitar algun dato mas, te ruego me lo solicites. Muchas Gracias. Ariel.
Escrito por Ariel (30/04/2010 11:22 AM)
Te puedo ayudar pero necesito mas datos del problema a mi correo, algún intento de diagnóstico con Process Monitor o algo así
Escrito por Erwin Ried (02/05/2010 03:00 AM)
Hola Erwin, excelentes tus articulos, felicitaciones. Tengo un problema; necesito eliminar delmenu contextual la opcion "Establecer como fondo de pantalla" que se aplica a archivos bmp, y no he podido hacerlo de ninguna manera, espero puedas ayudarme, gracias. te dejo mi correo el_danni@hotmail.com
Escrito por Daniel (14/04/2010 11:27 AM)
Mándame más detalles de tu problema a mi correo, esa opción generalmente la establece el visor de fotos de Windows por lo que tu problema correspondería al caso del menú desde un DLL (como explica este artículo sobre el menú de WMP)
Escrito por Erwin Ried (14/04/2010 12:31 PM)
Muy buenas, yo el problema que tengo es que cuando recibe un correo con el adjunto sintitulo.pdf no lo puede abrir, ni tampoco con el boton derecho me dice que no tiene permisos en el menu contextual, los otros pdf lo puede abrir desde el correo. Tengo outlook 2003 sp3. ¿cual seria el problema o la solucion? Gracias y un saludo
Escrito por Carlos (15/02/2010 07:10 AM)
¿Reinstalar el visor de archivos PDF?
Escrito por Erwin Ried (15/02/2010 08:16 PM)
Muy buenas Erwin. Hace unos años estuvimos en contacto para averiguar cómo funcionaba la llamada para escanear un fichero de un antivirus. Al final lo más rápido fue un programa que hice para mostrar por pantalla los argumentos de la llamada. No sé si me recordarás. Ahora he reencontrado tu entrada porque me ha surgido un problema editando el registro de windows para agregar entradas al menú contextual. Quiero agregar una entrada al menú contextual de una carpeta, pero no el que aparece al hacer clic derecho en el icono (sería el caso de tu artículo), sino al hacer clic derecho "en la zona vacía" de una carpeta ya abierta. Me refiero al menú que siempre muestra solamente "Ver, Organizar, Actualizar, Pegar..., Nuevo y Propiedades". ¿Sabes cuáles son las entradas del registro para ese menú? Un saludo y gracias
Escrito por Shalafi (09/02/2010 09:36 PM)
Recuerdo. Claro esas entradas son de HKEY_CLASSES_ROOT\Directory\Background, aunque esas opciones que comentas son "hardcoded", no son dinámicas. La única dinámica ahí es más que nada "Nuevo"
Escrito por Erwin Ried (09/02/2010 11:07 PM)

Este artículo tiene 94 comentarios adicionales

Copyright © 2010 por Erwin Ried.