viernes, marzo 31, 2006

¿Valores codificados en ROT13 en el Registro?

Si ha "trasteado" alguna vez con el Registro de Windows quizá se haya encontrado con una determinada clave que contiene valores un tanto extraños, aparentemente codificados y que puede que no sepa ni para qué sirven. Concretamente esos valores le permiten a Windows generar el listado de aplicaciones más utilizadas y aquí obtendrá más información sobre cómo mantiene Windows toda esa información.

Si abre Editor del Registro (Regedit.exe) y accede a la rama HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\{75048700-EF1F-11D0-9888-006097DEACF9}\Count, es muy probable que se encuentre con una ristra más o menos extensa de valores binarios cuyos nombres parecen estar codificados, observe la siguiente figura a modo de ejemplo:

Ejemplo de un valor contenido en la clave antes citada. Concretamente hace referencia a la Calculadora de Windows.

Efectivamente esos nombres están cifrados en ROT13, un sistema de codificación que se basa en la sustitución de cada caracter de una cadena por el ASCII situado trece posiciones después (considerando el alfabeto de manera cíclica). Puede obtener más información sobre este método de codificación así como un disponer de un espacio para codificar/descodificar automáticamente en la web http://rot13.de/ (en inglés).

¿Qué significan esos valores?

Si copia en la caja de texto de la web que comento anteriormente el nombre de alguno de los valores binarios que le aparecerán en la clave del Registro antes mencionada, obtendrá su descodificación desde ROT13. Y se encontrará con rutas bastante familiares, sin duda. ¿Qué hacen ahí?

Windows XP mantiene un cierto control sobre la utilización de las aplicaciones instaladas. Esto le permite generar listados como el que por defecto se encontrará al abrir el menú Inicio (suponiendo que use el menú de Inicio estilo XP). Cuando un usuario ejecuta una aplicación, Windows se prepara para almacenar en el Registro el dato acerca de que ésta ha sido utilizada una vez más, pero no sin antes consultar una lista de "excepciones". Este paso permite que no aparezcan entre el listado de aplicaciones más utilizadas un instalador de un programa, por ejemplo (cosa que sería absurda). La lista de excepciones la obtiene el sistema operativo desde la siguiente clave del Registro: HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ FileAssociation.

Excepciones por defecto para la lista de programas usados frecuentemente

Una vez que Windows decide que efectivamente debería controlar la frecuencia de uso de esa aplicación que el usuario tiene la intención de abrir, se crea en la clave HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\{75048700-EF1F-11D0-9888-006097DEACF9}\Count un valor binario codificado en ROT13 que incluye (de manera igualmente codificada) el número de ejecuciones que lleva el programa en cuestión.

Nota: Windows no lee continuamente de la anterior clave del Registro (sería una pérdida importante de rendimiento). Solamente lo hace en ciertas situaciones, entre las que se encuentran las siguientes: Cuando se añade un nuevo acceso directo a la clave, o bien cuando se modifica alguna propiedad del menú Inicio, o bien cuando se elimina manualmente alguna entrada (haciendo clic con el botón derecho del ratón sobre la misma y seleccionado Quitar de esta lista). Por ello es posible que si elimina manualmente algún valor de la clave (a modo de experimento) observe que los cambios no se producen instantáneamente en la lista de programas más utilizados del menú Inicio.

Agregar o quitar programas también utiliza toda esa información

Agregar o quitar programas también recoge esa información acerca de los programas y su frecuencia de uso. Basándose en el valor DisplayName de cada subclave de HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall, Windows obtiene la ruta del programa en cuestión utilizando dos palabras de dicho texto como palabras clave de búsqueda. La información una vez recabada se almacena regularmente en una caché situada en HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Management\ARPCache.

Si por algún motivo la información de la clave HKLM\Microsoft\Windows\CurrentVersion\App Management\ARPCache se pierde o se corrompe, observará que Windows tardará unos molestos segundos de más la primera vez que vuelva a abrir Agregar o quitar programas. Esto se debe a que durante ese tiempo el sistema está "consultando" al menú Inicio la frecuencia de uso de las aplicaciones, además de recorriendo el directorio Archivos de programa de manera intempestiva para calcular una estimación del espacio ocupado por cada programa. Toda la información queda compactada de nuevo en diferentes subclaves de la clave ARPCache, una para prácticamente cada aplicación.

Espero que el artículo les haya servido para profundizar sobre el funcionamiento interno de la característica "programas más usados" del menú Inicio estilo XP así como para comprender qué eran esos valores con nombres codificados en ROT13, en caso de que se los haya encontrado alguna vez en sus "buceos" por el Registro del sistema operativo.

1 comentario:

Anónimo dijo...

Tengo una pregunta.

Tengo Vista Home Premium, la 1° vez que encendi la lap el listado de programas mas usados ya estaba, habian programas como: Centro de Bienvenida, Windows Media Center, Windows Calendario, etc...
Le instale nuevos programas (Photoshop, PES6, Office, etc..) y me van apareciendo en la lista conforme los uso... pero una vez reinicio o la apago... como que el listado vuelve a verse como si fuera la 1° vez que la ubiera encendido... es decir, ya no aparecen los programa que mas uso... a que se debe, y lo echecado con 2 amigos que tienen la misma marca de lap y SO... y les sucede lo mismo, en cambio otro con una Sony Waio y el mismo SO no le sucede le funciona bien...(mi marca es Gateway)... espero puedas ayudarme