miniaturadeimagen| El registro de Windows es una base de datos jerárquica que almacena los ajustes de configuración y opciones en los sistemas operativos Microsoft Windows. Contiene la configuración de los componentes de bajo nivel del sistema operativo, así como de las aplicaciones que hay funcionando en la plataforma: hacen uso del registro el núcleo (kernel, en inglés), los controladores de dispositivos, los servicios, el SAM, la interfaz de usuario y las aplicaciones de terceros. El registro también proporciona un medio de acceso a los contadores para generar un perfil del rendimiento del sistema. El registro de Windows es una base de datos jerárquica que almacena los ajustes de configuración y opciones en los sistemas operativos Microsoft Windows. Contiene la configuración de los componentes de bajo nivel del sistema operativo, así como de las aplicaciones que hay funcionando en la plataforma: hacen uso del registro el núcleo (kernel, en inglés), los controladores de dispositivos, los servicios, el SAM, la interfaz de usuario y las aplicaciones de terceros. El registro también proporciona un medio de acceso a los contadores para generar un perfil del rendimiento del sistema.

Cuando se introdujo por primera vez con Windows 3.1, el propósito fundamental del registro de Windows era almacenar información sobre la configuración de componentes basados en COM. Con la introducción de Windows 95 y Windows NT, su utilización se extendió para ordenar la profusión de archivos INI de cada programa, los cuales se habían utilizado anteriormente para almacenar los ajustes de configuración de los programas basados en Windows. Las aplicaciones portátiles normalmente no escriben los datos relativos a la configuración en el registro de Windows, sino que guardan los datos de configuración en archivos ubicados dentro de un único directorio desde el cual se ejecuta la aplicación.

El sistema de registros de Windows es una interfaz operativa que provee Windows como un recurso muy útil para guardar las configuraciones del usuario, guardar rutas de acceso para archivos o carpetas y mantener un respaldo de los drivers utilizados para el hardware del equipo, así como ajustes básicos del equipo, Datos sobre qué aplicaciones están instaladas, sus configuraciones, los archivos que pueden crear y con qué programa abrir cada tipo.

El Registro contiene información que Windows utiliza como referencia continuamente, por ejemplo, los perfiles de los usuarios, las aplicaciones instaladas en el equipo y los tipos de documentos que cada aplicación puede crear, las configuraciones de las hojas de propiedades para carpetas y los iconos de aplicaciones, los elementos de hardware que hay en el sistema y los puertos que se están utilizando.

Es recomendable no cambiar valores en este registro a menos que se tengan conocimientos avanzados del sistema, ni tampoco si no sabe cómo devolver el registro a un punto de recuperación, ya que puede causar problemas de rendimiento, corrupción de archivos, o incluso impedir el arranque o actualización del sistema.

Fundamentos Antes de la existencia del registro, los archivos.INI almacenaban los ajustes de cada programa en un archivo de texto, a menudo en una ubicación compartida que no permitía ajustes específicos para cada usuario en entornos de múltiples usuarios. Por el contrario, el registro de Windows almacena todos los ajustes de las aplicaciones en un solo repositorio lógico (con un número pequeño de archivos) y de forma estandarizada. Según Microsoft, este sistema ofrece varias ventajas sobre los archivos INI. Como el análisis de archivos se realiza de forma mucho más eficiente con el formato binario, se puede leer o escribir en él más rápidamente que en un archivo INI. Así mismo, los datos fuertemente tipados se pueden almacenar en el registro, lo que no ocurría con la información de texto almacenada en los archivos INI."Windows 95 Architecture Components". Microsoft. http://www.microsoft.com/technet/archive/win95/rk31_arc.mspx?mfr=true. Retrieved 2008-04-29. "The following table shows other difficulties or limitations caused by using INI files that are overcome by using the Registry." Esto es una ventaja cuando se editan las claves manualmente usando regedit, el editor integrado para el registro de Windows. Dado que los ajustes del registro específicos para un usuario se cargan desde una ruta concreta para ese usuario, en lugar de hacerlo desde una ubicación de solo lectura del sistema, el registro permite que varios usuarios compartan el mismo equipo, y también permite que los programas funcionen para usuarios con menos privilegios. Además se han simplificado las copias de seguridad y la restauración, ya que es posible acceder al registro a través de una conexión de red para realizar labores de soporte y mantenimiento remotas, o incluso desde scripts usando el conjunto estándar de API, siempre y cuando el servicio de registro remoto esté funcionando y las reglas del cortafuegos lo permitan.

El registro dispone de características que mejoran la integridad del sistema, ya que está diseñado como una base de datos y cuenta con funciones parecidas a las de las bases de datos, como actualizaciones atomizadas. Si dos procesos intentan actualizar a la vez el mismo valor del registro, un cambio del proceso siempre precederá al otro y la coherencia general de los datos se mantendrá. Cuando se hacen cambios en los archivos INI, como en la condición de carrera, se pueden producir datos incoherentes que no coincidan con ninguna de las actualizaciones que se pretendían. Tanto Windows Vista como los sistemas operativos posteriores, proporcionan actualizaciones transaccionales del registro por medio del Administrador de transacciones de núcleo[necesita atribución], extendiendo las garantías que proporciona la atomicidad a múltiples cambios en las claves y valores, con la semántica commit-abort tradicional. (Nótese, sin embargo, que el NTFS proporciona el mismo soporte sistema de archivos, por lo que, en teoría, se podrían obtener las mismas garantías con los archivos de configuración tradicionales.)

Estructura

Claves y valores El registro contiene dos elementos básicos: claves y valores.

Las claves del registro son similares a carpetas: además de los valores, cada clave puede contener subclaves, que a su vez pueden contener más subclaves, y así sucesivamente. Las claves están referenciadas con una sintaxis parecida a los nombres de las rutas de Windows, y usan barras diagonales inversas para indicar los distintos niveles jerárquicos. Cada subclave tiene obligatoriamente un nombre: una cadena que no puede contener barras diagonales inversas y en la que no se distingue entre mayúsculas y minúsculas.

Únicamente se puede acceder a la jerarquía de las claves del registro desde un identificador de clave raíz conocido (que es anónimo, pero cuyo valor efectivo es un identificador numérico constante) asignado al contenido de una clave de registro precargada por el núcleo desde un "subárbol" almacenado, o asignado al contenido de una subclave dentro de otra clave raíz, o también asignado a un servicio registrado o DLL que proporciona acceso a los valores y subclaves contenidos en éste.

Ejemplo: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows se refiere a la subclave "Windows" de la subclave "Microsoft" de la subclave "Software" de la clave raíz HKEY_LOCAL_MACHINE.

Hay siete claves raíz predefinidas, las cuales tradicionalmente se nombran según su identificador constante definido en la API de Win32, **por sus abreviaturas correspondientes (dependiendo de las aplicaciones): HKEY_LOCAL_MACHINE o bien HKLM HKEY_CURRENT_CONFIG o bien HKCC (únicamente en Windows 9x/Me y en las versiones basadas en NT de Windows) HKEY_CLASSES_ROOT o bien HKCR HKEY_CURRENT_USER o bien HKCU HKEY_USERS o bien HKU HKEY_PERFORMANCE_DATA (únicamente en las versiones de Windows basadas en NT, pero invisible para el editor del registro) HKEY_DYN_DATA (únicamente en Windows 9x/Me, y visible en el editor de registro de Windows)

Al igual que otros archivos y servicios de Windows, todas las claves de registro pueden restringirse mediante listas de control de acceso (ACL), dependiendo de los privilegios del usuario, los tokens de seguridad obtenidos por las aplicaciones, o las directivas de seguridad aplicadas por el sistema (estas restricciones pueden ser definidas por el mismo sistema y configuradas por los administradores locales del sistema o por administradores de dominio). Los diferentes usuarios, programas, servicios y sistemas remotos podrán ver únicamente una parte de la jerarquía o de las distintas jerarquías de las mismas claves raíz.

Los valores del registro son pares de nombres y datos almacenados dentro de las claves. Los valores del registro se referencian separados de las claves de registro. Cada valor de registro almacenado en una clave de registro posee un nombre único, sin distinguir entre mayúsculas y minúsculas. Las funciones API de Windows que consultan y manipulan los valores del registro toman nombres de valor independientes de la ruta de la clave o el indicador que identifica la clave principal. Los valores del registro pueden contener barras diagonales inversas en el nombre, pero esto los hace difíciles de distinguir de sus rutas de clave cuando se utilizan algunas funciones API del registro de Windows (cuyo uso está obsoleto en Win32).

La terminología puede inducir a error, ya que cada clave de registro es similar a un vector asociativo, en el que la terminología estándar denomina "clave" a la parte del nombre de cada valor de registro. Los términos son un vestigio del registro de 16 bits de Windows 3, en el cual las claves de registro no podían contener pares de nombres/datos, sino que contenían únicamente un valor sin nombre (que tenía que ser una cadena). En este sentido, todo el registro era como un único vector asociativo en el que las claves de registro (tanto en el sentido de registro como en el del diccionario) formaban una jerarquía, y los valores del registro eran todos cadenas. Cuando se creó el registro de 32 bits, también se creó la capacidad adicional de crear múltiples valores con nombre por clave y, de algún modo, se distorsionó el significado de los nombres.Raymond Chen, "Why do registry keys have a default value?" Para mantener la compatibilidad con el comportamiento anterior, todas las claves de registro pueden tener un valor "por defecto", cuyo nombre es la cadena vacía.

Cada valor puede almacenar datos arbitrarios de longitud y codificado variables, pero asociados a un tipo simbólico de datos (definido como una constante numérica) que expresa cómo analizar estos datos. Los tipos estándar son: