| Artículos | 01 FEB 1996

Registro de información en Windows 95

Tags: Histórico
Cómo organizar pequeños trozos de información dispersos
David Rodríguez.

Hasta las aplicaciones más sencillas necesitan almacenar de forma permanente pequeñas dosis de información. Con la llegada de Windows 95 se ha dotado al sistema de un Registro con avanzadas funciones.

En Windows 3.0, algo que suena distante en nuestros oídos pero que sin embargo no lo es tanto, las aplicaciones guardaban pequeños retales de información en ficheros de extensión INI. Así, la típica trayectoria para saber donde estaban los ficheros de datos se almacenaba como una entrada del fichero del sistema WIN.INI. Si la aplicación era más seria y sus necesidades extensas, entonces lo mejor era tener un fichero propio, denominado privado en términos microsoftianos. Las funciones básicas del sistema, a grandes rasgos, se reducían a las siguientes: GetProfileInt, GetProfileSection, GetProfileString, WriteProfileSection y WriteProfileString, que se pueden contar con los dedos de una mano.

Aplicando estas funciones, el primer desastre que se avecinaba se refería al fichero WIN.INI que sólo podía tener un tamaño máximo de 64 KB (limitación característica de todos los ficheros INI), lo cual era muy poco a todas luces, dado que se iba llenando progresivamente de basura al instalar y desinstalar aplicaciones, por lo que se hacía recomendable usar ficheros privados con GetPrivateProfileInt, GetPrivateProfileString, y WritePrivateProfileString. Sin embargo, la utilización de ficheros privados no dejaba de tener sus problemas, pues los servicios como DDE (Dynamic Data Exchange) y OLE (Object Linking and Embedding) precisaban de lugares comunes donde guardar ciertos valores que pudieran ser compartidos.

Además, el hecho de que sólo pudieran almacenarse cadenas obligaba a que las aplicaciones hiciesen verdaderos esfuerzos de traducción de sus datos habitualmente binarios (estructuras o clases). Otro problema era la ausencia de reglas en cuanto a cómo guardar la información o en qué orden, lo que convertía todo en un auténtico caos.

El Registro

Windows 3.1 vino a solucionar parcialmente este problema: se creo una base de datos de inscripciones (registration database), a la que de ahora en adelante nos referiremos como Registro (registry). El Registro tiene una organización jerárquica basada en elementos llamados claves (keys) que a su vez son subclaves de otra de rango superior, denominada clave padre. Evidentemente, existe una clave que es la cumbre del árbol y que no tiene ninguna que se encuentre por encima, la cual se predefine con el identificador HKEY_CLASSES_ROOT. Al igual que un árbol, cada nivel de subclave se denomina rama.

En Windows 3.1 existía la siguiente regla de oro: cada clave puede tener un valor asociado (uno y sólo uno) pero este valor ha de ser necesariamente una cadena de texto.

La gestión del Registro se realizaba con 7 funciones: RegOpenKey, RegCreateKey, RegCloseKey, RegDeleteKey, RegEnumKey, RegQueryValue y RegSetValue; y su implementación física se lograba con el fichero REG.DAT que se ubicaba en el mismo directorio de Windows (normalmente, C:\WINDOWS\REG.DAT). Con un editor de textos, se podían crear ficheros .REG que eran añadidos directamente al Registro, es decir, sus valores quedaban registrados.

El Registro en Windows 32 bits

Cuando crearon la primera versión de Windows NT ya no cometieron los errores de antaño y suprimieron parte del lastre que se venía acumulando generación tras generación. Así, los ficheros AUTOEXEC.BAT, CONFIG.SYS, WIN.INI, SYSTEM.INI y los cientos de ficheros INI privados de las aplicaciones fueron absorbidos por un omnipresente Registro. También los ficheros de grupos de programas (.GRP) fueron incluidos en este proyecto. Por razones de compatibilidad, los programas de Windows NT también consiguen manejar ficheros .INI, pero sólo en algunos casos y no es recomendable que las aplicaciones venideras utilicen este método obsoleto.

Lógicamente, era necesario aumentar las prestaciones del primitivo Registro para lo cual se le dotó de la siguiente propiedad: una clave puede tener uno, varios o ningún valor asociado y un valor puede almacenar cualquier tipo de información. El editor del Registro, denominado REGEDIT.EXE (o REGEDT32) viene incorporado en Windows y tiene un aspecto como el mostrado en la figura 1.

Como se puede ver, las claves han de tener un nombre no mayor de 32 caracteres y sólo se admiten caracteres ANSI sin espacios, barras invertidas o comodines. Aquellas claves que comienzan por un punto "." están reservadas. Por contra, los valores apenas tienen limitaciones. Entre los formatos soportados tenemos REG_BINARY, que almacena datos binarios de cualquier tipo, REG_DWORD, que son números enteros de 32 bits; REG_DWORD _BIG_ENDIAN, que viene a ser lo mismo pero con el formato invertido; REG_DWORD _LITTLE_ENDIAN, similar a REG_DWORD; REG_EXPAND_SZ que contiene una cadena que representa a una variable del sistema sin expandir (por ejemplo %PATH%); REG_LINK, enlace simbólico Unicode; REG_MULTI_SZ que es una matriz de cadenas, representando el final de la misma con un doble 0; REG_NONE cuando el formato no se especifica; REG_RESOURCE_LIST o lista de recursos de dispositivos y, finalmente, REG_SZ, que es una simple cadena. Aunque las funciones del Registro devuelven las cadenas en ANSI o Unicode según proceda, internamente siempre se guardan en Unicode.

Claves predefinidas

Antes vimos que existía una clave superior denominada HKEY_CLASSES_ROOT. Existen otras 5, denominadas HKEY_CURRENT _USER, HKEY_LOCAL_MACHINE, HKEY_USERS, HKEY_CURRENT_CONFIG, y HKEY_DYN_DATA que ya están predefinidas y abiertas permanentemente. Sin embargo, todas ellas se encuentran al mismo nivel, dado que HKEY_CLASSES_ROOT se mantiene por la necesidad de compatibilizar con Windows 3.1 y los procesos con OLE y DDE, además de la propia interfaz de Windows.

La clave HKEY_CURRENT_USER engloba todas las particularidades que afectan a las preferencias del usuario. Así tenemos variables de entorno, datos de los grupos de programas, colores, impresoras, enlaces de red local y preferencias de aplicaciones. Los suministradores de software emplean esta clave para guardar datos específicos, como es el caso de Microsoft que automáticamente incorpora la subclave "HKEY_CURRENT_USER\Software\Microsoft". Esta clave está vinculada a HKEY_USERS, aunque se ha separado visualmente para facilitar el acceso.

Bajo la clave HKEY_LOCAL_MACHINE se almacena información relativa al estado físico del ordenador, tal como tipo de bus, memoria del sistema, sistema multimedia y, en general, información sobre las tarjetas instaladas. En las subclaves encontramos información sobre la configuración actual, dispositivos Plug and Play, preferencias en el logon de la red local así como información de seguridad, servidores, localizaciones, etc.

HKEY_USERS contiene información específica de cada usuario del ordenador. Esto es fundamental en Windows NT y su sistema de seguridad, aunque menos en Windows 95. HKEY_CURRENT_CONFIG está vinculada a HKEY_LOCAL_MACHINE e incorpora variantes sobre esta última. También se ha separado por comodidad de acceso.

HKEY_DYN_DATA es una clave un tanto especial, e incorpora datos sobre registros dinámicos. Un registro dinámico se diferencia de los estáticos (almacenados en disco) en que su valor cambia muy frecuentemente. Un ejemplo de ello podría ser información estadística sobre el rendimiento del sistema.

La misión más importante de esta clave es que los controladores de los dispositivos virtuales VxDs puedan proporcionar datos en tiempo real a las aplicaciones, ya corran localmente o remotamente. También se usa como un truco para transferir velozmente datos entre anillos de la CPU.

Windows NT y Windows 95

El sistema operativo Windows 95 ha copiado su esquema de Registro del Windows NT y se podría pensar que es una simplificación de

Contenidos recomendados...

Comentar
Para comentar, es necesario iniciar sesión
Se muestran 0 comentarios
X

Uso de cookies

Esta web utiliza cookies técnicas, de personalización y análisis, propias y de terceros, para facilitarle la navegación de forma anónima y analizar estadísticas del uso de la web. Consideramos que si continúa navegando, acepta su uso. Obtener más información