viernes, enero 27, 2006

¿Dónde y cómo se almacenan las personalizaciones de carpetas en Windows?

Si siempre se ha preguntado cómo hace Windows para recordar las personalizaciones aplicadas a las carpetas del disco duro no tiene más que leer este comentario, donde se tratará el tema detalladamente.

En cada apertura y cierre de alguna carpeta Windows XP almacena la información referente a su tipo (documentos, estándar, música, vídeos, etc.) así como ciertos parámetros visuales tales como el tamaño y la posición. En concreto el fichero Explorer.exe crea ciertas ramas en las claves del Registro HKCU\Software\Microsoft\Windows\Shell y HKCU\Software\Microsoft\Windows\ShellNoRoam cada vez que se abre o personaliza una carpeta. Veámos de manera algo más detallada cómo lo hace exactamente:

En primer lugar, Explorer.exe comprueba el contenido del valor BagMRU Size de la clave HKCU\Software\Microsoft\Windows\ShellNoRoam. Esto le permite saber si se ha alcanzado el límite de carpetas que se pueden almacenar (y por ello no almacenará más). Con Service Pack 2 Microsoft decidió ampliar este valor hasta 5000 (decimal). Esto quiere decir que podrá almacenar por defecto 5000 carpetas personalizadas en un sistema Windows XP SP2.

Posteriormente se crean dos claves (si es la primera ejecución del Explorador de Windows tras la instalación de XP), o bien se modifica su contenido apropiadamente. Las claves implicadas en esta operación son las siguientes:

HKCU\Software\Microsoft\Windows\ShellNoRoam\BagMRU.

HKCU\Software\Microsoft\Windows\ShellNoRoam\Bags.


La primera de ellas (BagMRU) es una especie de índice para Windows. En ella se generan sucesivamente valores de tipo binario (REG_BINARY) con nombres no muy originales: números a partir de 0. Estos valores binarios contienen la ruta de la carpeta que se ha almacenado. Asimismo el número del valor binario le permitirá a Windows enlazar con la subclave apropiada (Bag MRU\0), por ejemplo. En esta subclave Windows revisa el valor NodeSlot y, según el número que contenga, acudirá al "trastero" donde se ubica toda la información sobre la personalización de la carpeta, este lugar no es otro que la clave Bags.

En la clave Bags Windows genera un gran número de subclaves con nombres numéricos. Entre su contenido está toda la información de la personalización de cada carpeta, su tipo, su tamaño, su posición, etc. Windows acudirá a la subclave de la rama Bags que le indique el valor NodeSlot comentado anteriormente. Esto garantiza que Windows asigne a cada carpeta su personalización correcta y que ésta sea obtenida satisfactoriamente.

Sobre personalización de carpetas quizá también haya oído hablar del archivo Desktop.ini, encargado de otros matices de la personalización de carpetas.

El archivo Desktop.ini, fichero de sistema ubicado en la raíz de ciertas carpetas, permite que Windows aplique un cierto icono (no confundir con una vista en miniatura) así como otros parámetros (texto alternativo a mostrar mientras se deja el cursor sobre la carpeta, nombre de la carpeta, etc.).

Ejemplo de fichero Desktop.ini

Para que Windows tenga en cuenta el fichero Desktop.ini, debe suceder una cosa aparentemente curiosa: entre los atributos de la carpeta debe figurar el atributo de sólo lectura. Para ver o modificar el atributo de sólo lectura aplicado a carpetas, no a archivos, la interfaz de Windows no nos es de utilidad. En su lugar abra Inicio, Ejecutar, escriba cmd, pulse Aceptar, teclee el siguiente comando y pulse a continuación Intro:

attrib "C:\Carpeta"

o, para aplicarle el atributo de sólo lectura a la carpeta:

attrib +r "C:\Carpeta"

(Se supone que C:\Carpeta es la ubicación de la carpeta a tratar).

Por defecto Windows asigna el atributo de sólo lectura a la carpeta cuyo icono haya sido modificado (por ejemplo) y automáticamente le genera un fichero de sistema Desktop.ini en su raíz. La pérdida del atributo de sólo lectura y/o del fichero Desktop.ini en carpetas del sistema operativo supone que éstas pierdan su personalización, eche un vistazo a este artículo mío para ver un ejemplo de ello:

La carpeta "Documentos compartidos" ha cambiado su nombre por "Documentos"

3 comentarios:

Anónimo dijo...

en el archivo desktop.ini, ademas puedes colocarle icono a la carpeta, fondo, tipo de letra y color de letra, en '98 puedes personalizarlo maas aun con el archivo folder.htt, puedes crear unas pagina web dentro de la carpeta y ejecutarla automaticamente cada ves que la abras

Anónimo dijo...

Tener tildado "solo lectura" en una carpeta para personalizarla es de todo menos "curioso", ya que si usamos un programa serio para trabajar sobre esa carpeta eventualmente checkeara que el atributo de solo lectura no le permite utilizarlo correctamente. Esto que parece anecdotico esta en la lista de los errores de diseño mas aberrantes que aparecieron en windows

SullyPanda dijo...

Estan equivocados. No es el atributo Solo Lectura, es el atributo "Sistema"