Registro de Windows
# Registro de Windows

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 como 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. 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. 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:

Lista de tipos de valores estándar del registro :

| Nombre | Nombre de tipo simbólico de datos | Significado y codificación de los datos almacenados en el valor de registro |
| - | - | - |
| 0 | REG_NONE | Datos sin ningún tipo (en todo caso, el valor almacenado) |
| 1 | REG_SZ | Valor de cadena, normalmente almacenado y mostrado en UTF-16LE (cuando se utiliza la versión Unicode de las funciones API de Win32), que generalmente termina con un carácter nulo |
| 2 | REG_EXPAND_SZ | Valor de cadena "expandible" que puede contener variables de entorno, normalmente almacenado y mostrado en UTF-16LE, que generalmente termina con un carácter nulo |
| 3 | REG_BINARY | Datos binarios (cualquier dato arbitrario) |
| 4 | REG_DWORD / REG_DWORD_LITTLE_ENDIAN | Valor DWORD, número entero no negativo de 32 bits (números entre el 0 y el 4.294.967.295 [232 – 1]) (little-endian) |
| 5 | REG_DWORD_BIG_ENDIAN | Valor DWORD, número entero no negativo de 32 bits (números entre el 0 y el 4.294.967.295 [232 – 1]) (big-endian) |
| 6 | REG_LINK | Enlace simbólico (UNICODE) a otra clave de registro, especificando una clave raíz y la ruta a la clave objetivo |
| 7 | REG_MULTI_SZ | Valor de cadena múltiple, que generalmente es una lista ordenada de cadenas no vacías, normalmente almacenadas y mostradas en UTF-16LE, cada una de ellas terminada en un carácter nulo, y la lista normalmente también termina con un carácter nulo. |
| 8 | REG_RESOURCE_LIST | Lista de recursos (usada por la enumeración y configuración del hardware Plug-n-Play) |
| 9 | REG_FULL_RESOURCE_DESCRIPTOR | Descriptor de recursos (usado por la enumeración y configuración del hardware Plug-n-Play) |
| 10 | REG_RESOURCE_REQUIREMENTS_LIST | Lista de requisitos de recursos (usada por la enumeración y configuración del hardware Plug-n-Play) |
| 11 | REG_QWORD / REG_QWORD_LITTLE_ENDIAN | Valor QWORD, número entero de 64 bits (puede ser big-endian o little-endian, o sin especificar). (Introducido en Windows XP) |

### Subárboles

El registro comprende varias secciones lógicas o «subárboles» (la palabra inglesa para subárbol, «hive», es un chiste interno). Los subárboles normalmente se nombran según las definiciones de sus API de Windows, las cuales empiezan siempre por «HKEY». Con frecuencia se abrevian en un nombre de tres o cuatro letras que empieza con «HK» (p. ej., HKCU y ). Técnicamente, se trata de indicadores predefinidos (con valores constantes predefinidos) para claves específicas que se mantienen en la memoria o se almacenan en archivos de subárbol almacenados en el sistema de archivos local y cargados por el núcleo del sistema en el tiempo de arranque, y a continuación se comparten (con varios derechos de acceso) entre todos los procesos que se están ejecutando en el sistema local, o cargados y asignados en todos los procesos iniciados en una sesión de usuario cuando el usuario accede al sistema. Los nodos HKEY_LOCAL_MACHINE (datos de configuración local específicos del equipo) y HKEY_CURRENT_USER (datos de configuración específicos del usuario) tienen una estructura similar entre sí; las aplicaciones del usuario normalmente buscan su configuración buscándolos primero en «HKEY_CURRENT_USER\Software\Vendor's name\Application's name\Version\Setting name», y si no se encuentra la configuración, miran en la misma ubicación, en la clave HKEY_LOCAL_MACHINE [necesita cita]. Sin embargo, se puede aplicar lo opuesto en configuraciones de directivas aplicadas por el administrador, en las que el HKLM puede estar por encima del HKCU. El programa del logotipo de Windows tiene requisitos específicos sobre dónde se pueden almacenar los distintos tipos de datos de usuario para que se siga el principio del privilegio mínimo, de forma que no se necesite acceso a nivel de administrador para usar una aplicación.

**HKEY_LOCAL_MACHINE (HKLM)**

HKEY_LOCAL_MACHINE, abreviado como HKLM, almacena configuraciones específicas del equipo local.

Las claves ubicadas como HKLM realmente no se almacena en el disciones NT de Windows]], esta clave contiene cuatro subclaves: «SAM», «SECURITY», «SYSTEM» y «SOFTWARE», las cuales se cargan en el tiempo de arranque en sus respectivos archivos ubicados en la carpeta %SystemRoot%\System32\config. Hay una quinta subclave, «HARDWARE», que es volátil y se crea dinámicamente y, como tal, no se almacena en un archivo (muestra una vista de todos los dispositivos Plug-and-Play detectados en ese momento). En Windows Vista y versiones superiores, el núcleo asigna una sexta subclave en la memoria y se llena con datos de la configuración de arranque (BCD).

* La clave «HKLM\SAM» normalmente aparece vacía para la mayoría de los usuarios (a no ser que los administradores del sistema local o los administradores de dominios que administran el sistema local les hayan concedido acceso). Se utiliza para referenciar todas las bases de datos "administrador de cuentas de seguridad" (SAM) para todos los dominios en los cuales el sistema local ha sido autorizado o configurado administrativamente (incluyendo el dominio local del sistema en ejecución, cuya base de datos SAM está almacenada en una subclave llamada también «SAM»; se crearán otras subclaves según se necesiten, una por cada dominio adicional). Cada base de datos SAM contiene todas las cuentas integradas (principalmente alias de grupo) y cuentas configuradas (usuarios, grupos y sus alias, incluyendo cuentas invitadas y cuentas de administrador), creadas y configuradas en su respectivo dominio, ya que cada cuenta en ese dominio contiene el nombre de usuario que se puede utilizar para iniciar sesión en ese dominio, el identificador interno y exclusivo del usuario en el dominio, una función hash criptográfica de la contraseña de cada usuario para cada protocolo de autenticación habilitado, la ubicación del almacenamiento de su subárbol de registro de usuario, varios indicadores de estado (por ejemplo si la cuenta se puede enumerar y hacer visible en la ventana emergente de inicio de sesión), y la lista de dominios (incluido el dominio local) en el que se configuró la cuenta.
* La clave «HKLM\SECURITY» generalmente aparece vacía para la mayoría de los usuarios (excepto cuando un usuario con privilegios de administrador les concede acceso) y está vinculada a la base de datos de seguridad del dominio en el que ha iniciado sesión el usuario (si el usuario ha iniciado sesión en el dominio del sistema local, esta clave estará vinculada al subárbol de registro almacenado en el equipo local y gestionado por administradores locales del sistema o por la cuenta "Sistema" integrada y los instaladores de Windows). El núcleo accederá a ella para leer y aplicar la directiva de seguridad que sea de aplicación al usuario actual y a todas las aplicaciones y operaciones ejecutadas por este usuario. También contiene una subclave "SAM", vinculada dinámicamente a la base de datos SAM del dominio en el cual el usuario actual ha iniciado sesión.
* Normalmente, la clave «HKLM\SYSTEM» únicamente es editable por usuarios con privilegios de administrador en el sistema local. Contiene información sobre el programa de instalación del sistema de Windows, datos para el generador seguro de números aleatorios (RNG), la lista de los dispositivos montados actualmente que contienen un sistema de archivos, varios "HKLM\SYSTEM\Control Sets" numerados que contienen configuraciones alternativas de los servicios y controladores del hardware del sistema que está en funcionamiento en el sistema local (incluyendo el que está en uso y una copia de seguridad), una subclave "HKLM\SYSTEM\Select" que contiene el estado de este conjunto de controles, y un "HKLM\SYSTEM\CurrentControlSet" el cual, durante el tiempo de arranque, se vincula dinámicamente al conjunto de controles usado en esos momentos en el sistema local. Cada conjunto de controles configurado contiene:
* Una subclave "Enum" que enumera todos los dispositivos Plug-and-Play conocidos y los asocia a los controladores de sistema instalados (y almacena las configuraciones específicas de cada dispositivo de dichos controladores).
   * Una subclave "Services" en la que se enumeran todos los controladores de sistema instalados (sin configuración específica para dispositivos y con una enumeración de los dispositivos para los cuales se ha creado una instancia de los mismos) y todos los programas que funcionan como servicios (cómo y cuándo se pueden iniciar automáticamente).
   * Una subclave "Control", la cual organiza los diversos controladores de hardware y programas que están funcionando como servicios, y la configuración del resto del sistema.
   * Una subclave "Hardware Profiles", que enumera los diversos perfiles que se han optimizado (cada uno de ellos con la configuración de "sistema" o "software" usada para modificar el perfil predeterminado en servicios y controladores del sistema o en las aplicaciones), así como la clave "Hardware Profiles\Current", que se vincula dinámicamente a uno de esos perfiles.
   * La subclave "HKLM\SOFTWARE" contiene ajustes de software y de Windows (en el perfil predeterminado de hardware). Resulta modificada principalmente por los instaladores del sistema y de las aplicaciones. Se ordena por vendedor de software (con una subclave para cada uno), pero también contiene una subclave "Windows" para algunas configuraciones de la interfaz de usuario de Windows, una subclave "Classes" que contiene todas las asociaciones registradas de extensiones de archivo, tipos de MIME, Id. de clases de objetos e Id. de interfaces (para OLE, COM/DCOM y ActiveX), para las aplicaciones o DLL instalados que probablemente manejen estos tipos en el equipo local (sin embargo, dichas asociaciones son configurables para cada usuario, ver más adelante), y una subclave "Policies" (también ordenada por vendedor) para aplicar las directivas de uso general en aplicaciones y servicios del sistema (incluyendo el almacén central de certificados usado para autentificar, autorizar o desautorizar a sistemas y servicios remotos que funcionan desde fuera del dominio de la red local).
* La clave "HKLM\SOFTWARE\Wow6432Node" se usa con aplicaciones de 32 bits en los SO Windows de 64 bits y, aunque es independiente, es equivalente a "HKLM\SOFTWARE". En aplicaciones de 32 bits, WoW64 presenta de forma transparente la ruta de la clave como HKLM\SOFTWARE (similar a la forma en que las aplicaciones de 32 bits ven %SystemRoot%\Syswow64 como %SystemRoot%\System32)

**HKEY_CLASSES_ROOT (HKCR)**

HKEY_CLASSES_ROOT, abreviado como HKCR, contiene información sobre aplicaciones registradas, como asociaciones de archivos e Id. de clase de objetos OLE, ligándolos a las aplicaciones utilizadas para identificar estos elementos. En Windows 2000 y versiones superiores, HKCR es una compilación de HKCU\Software\Classes basada en el usuario y de HKLM\Software\Classes basada en el equipo. Si un valor dado existe en las dos subclaves anteriores, la contenida en HKCU\Software\Classes prevalece. El diseño permite el registro de objetos COM específico del equipo o del usuario. El subárbol de clases específico del usuario, a diferencia del subárbol HKCU, no forma parte del perfil de usuario móvil.

**HKEY_USERS (HKU)**

HKEY_USERS, abreviado como HKU, contiene subclaves correspondientes a las claves HKEY_CURRENT_USER de cada perfil de usuario cargado activamente en el equipo, aunque normalmente solo se cargan los subárboles de usuario correspondientes a los usuarios con sesión iniciada en esos momentos.

**HKEY_CURRENT_USER (HKCU)**

HKEY_CURRENT_USER, abreviado como HKCU, almacena configuraciones específicas del usuario con sesión iniciada en esos momentos. La clave HKEY_CURRENT_USER es un enlace a la subclave de HKEY_USERS correspondiente al usuario; se puede acceder a la misma información en ambas ubicaciones. En los sistemas NT de Windows la configuración de cada usuario se almacena en sus propios archivos, llamados NTUSER.DAT y USRCLASS.DAT dentro de su subcarpeta Documents and Settings (o en su subcarpeta Usuarios en Windows Vista y versiones superiores). Las configuraciones contenidas en este subárbol siguen de equipo en equipo a los usuarios con perfil móvil.

**HKEY_PERFORMANCE_DATA**

Esta clave proporciona información del tiempo de ejecución mediante datos de rendimiento proporcionados por el propio núcleo NT o por controladores del sistema, programas y servicios en funcionamiento que proporcionen datos de rendimiento. Esta clave no se almacena en ningún subárbol y no aparece en el Editor de registro, pero es visible a través de las funciones de registro en el API de Windows, en una vista simplificada a través de la pestaña Rendimiento del Administrador de tareas (únicamente para algunos datos de rendimiento del sistema local) o a través de paneles de control más avanzados (como el Monitor de rendimientos o el Analizador de rendimientos, los cuales permiten recoger y registrar esta información, incluyendo la de sistemas remotos).

**HKEY_DYN_DATA**

Esta clave se usa solo en Windows 95, Windows 98 y Windows Me. Contiene información sobre dispositivos de hardware, incluyendo estadísticas de rendimiento de Plug and Play y de red. La información contenida en este subárbol tampoco se almacena en el disco duro. La información sobre Plug and Play se recoge y configura en el inicio, y se almacena en la memoria.lml.

## Edición

### Edición manual

El registro de Windows se puede editar manualmente mediante programas como regedit.exe y, en versiones más antiguas de Windows, regedt32.exe, aunque estas herramientas no muestran algunos de los metadatos del registro, como por ejemplo los últimos datos modificados. También implementan soluciones alternativas en código, las cuales permiten renombrar las claves del registro, ya que las API subyacentes no admiten esta funcionalidad. Dado que cualquier descuido en los cambios podría causar daños irreversibles, Microsoft recomienda hacer una copia de seguridad del registro antes de editarlo. Los cambios incorrectos hechos en el registro con el editor de registro pueden provocar problemas en Windows que abarcan a todo el sistema, y que pueden requerir la reinstalación de Windows para solucionarlos. A veces es necesario editar el registro cuando se intentan soluciones alternativas a problemas específicos de Windows. Por ejemplo, los problemas surgidos al iniciar sesión en un dominio se pueden resolver editando el registro. En Windows 3.x apareció una implementación sencilla de la herramienta de registro actual, llamada "Editor de información de registro" o "Editor de registro". En esencia, se trataba de una base de datos de aplicaciones usadas para editar objetos OLE incrustados en los documentos. Los sistemas operativos Windows 9x incluían REGEDIT.EXE, el cual se podía usar en Windows y también en MS-DOS en modo real. Windows NT introdujo los permisos para editar el registro. Windows NT 4.0 y Windows 2000 se distribuyeron con el programa REGEDIT.EXE de Windows 9x y con el programa REGEDT32.EXE de Windows NT 3.x. Había varias diferencias entre los dos editores de estas plataformas:

* REGEDIT.EXE tenía a la izquierda una vista de árbol que comenzaba en "Mi equipo" y enumeraba todos los subárboles cargados. REGEDT32.EXE tenía una vista de árbol a la izquierda, pero cada subárbol tenía su propia ventana, por lo que el árbol solo mostraba las claves.
* REGEDIT.EXE representaba los tres componentes de un valor (nombre, tipo y datos) en columnas independientes de una tabla. REGEDT32.EXE representaba dichos componentes en forma de lista de cadenas.
* REGEDIT.EXE admitía hacer clic con el botón secundario del ratón sobre las entradas de una vista de árbol para ajustar las propiedades y otras configuraciones. REGEDT32.EXE requería que todas las acciones se realizaran desde la barra de menús superior.
* REGEDIT.EXE admitía la búsqueda por todo el registro de nombres, valores o datos de las claves, mientras que REGEDT32.EXE solo admitía la búsqueda por nombre de la clave en un único subárbol cada vez.
* Las versiones anteriores de REGEDIT.EXE no eran compatibles con los permisos de edición. Por ello, en las versiones anteriores solo REGEDT32.EXE podía acceder a toda la funcionalidad de un registro NT. REGEDIT.EXE en Windows XP y versiones superiores es compatible con los permisos de edición.
* REGEDIT.EXE solo admitía valores de cadena (REG_SZ), binarios (REG_BINARY) y DWORD (REG_DWORD). REGEDT32.EXE admitía estos valores, además de la cadena expandible (REG_EXPAND_SZ) y la cadena múltiple (REG_MULTI_SZ). Al intentar editar tipos de clave no compatibles con REGEDIT.EXE en Windows 2000 o Windows NT 4.0 se producía su conversión irreversible en un tipo compatible.

Windows XP fue el primer sistema que integró los dos programas en uno solo, adoptando la interfaz del antiguo REGEDIT.EXE y añadiendo la funcionalidad de REGEDT32.EXE. Las diferencias enumeradas anteriormente no son aplicables a Windows XP ni a los sistemas posteriores; REGEDIT.EXE es el editor mejorado y REGEDT32.EXE está en desuso. En Windows XP y superiores, el Editor de registro también admite varias instancias cuando se especifica el modificador -m. El Editor de registro permite que los usuarios ejecuten las siguientes funciones:

* Crear, manipular, renombrar y borrar claves, valores y datos de valores del registro.
* Importar y exportar archivos.REG, exportar datos en formato de subárbol binario
* Cargar, manipular y descargar archivos del registro con formato de subárbol (únicamente en sistemas basados en Windows NT)
* Configurar permisos basados en ACL (únicamente en sistemas basados en Windows NT)
* Marcar como favoritas claves del registro seleccionadas por el usuario.
* Encontrar determinadas cadenas en nombres de clave, nombres de valor y datos de valor.
* Editar remotamente el registro desde otro equipo que esté en red.

También es posible editar el registro en Linux usando el editor de código abierto Offline NT Password & Registry Editor para editar los archivos

### Archivos.REG

Los archivos.REG (también conocidos como entradas de registro) son archivos legibles de texto para importar y exportar partes del registro. En Windows 2000 y sistemas operativos posteriores basados en NT, contienen la cadena Windows Registry Editor Version 5.00 al principio, y se basan en Unicode. En sistemas Windows 9x y NT 4.0, contienen la cadena REGEDIT4 y se basan en ANSI. El formato de los archivos.REG de Windows 9x es compatible con Windows 2000 y sistemas posteriores basados en NT. El Editor de registro de Windows para estos sistemas también admite la exportación de archivos.REG en formato Windows 9x/NT. Los datos se almacenan en archivos.REG con la siguiente sintaxis:[19]

Se puede editar el valor predeterminado de una clave usando @ en lugar de "Value Name":

Los valores de cadena no requieren un <Value type> (ver ejemplo), pero backslashes ("\") necesita ser escrita como una doble barra invertida ("\ \") Por ejemplo, para añadir los valores "Value A", "Value B", "Value C", "Value D", "Value E", "Value F", "Value G", "Value H", "Value I", "Value J", and "Value K" a la clave HKLM\SOFTWARE\Microsoft,

Los datos de archivos.REG se pueden añadir o fusionar con el registro haciendo doble clic sobre esos archivos o usando el modificador /s en la línea de comandos. Los archivos.REG también se pueden utilizar para eliminar datos del registro. Para eliminar una clave (y todas las subclaves, valores y datos), el nombre de la clave debe estar precedida por el signo menos ("-").

Por ejemplo, para eliminar la clave HKLM\SOFTWARE\Microsoft (y todas las subclaves, valores y datos),

Para eliminar un valor (y sus datos), los valores que se van a eliminar deben tener un signo menos ("-") después del signo igual ("=").

Por ejemplo, para eliminar únicamente los valores del "Value A" and "Value B" (y sus datos) de la clave HKLM\SOFTWARE\Microsoft,

"Value A"=- "Value B"=- Para eliminar únicamente el valor (predeterminado) de la clave HKLM\SOFTWARE\Microsoft (y sus datos),

Las líneas que comienzan con un punto y coma se consideran comentarios:

### Edición de la línea de comandos

Se puede manipular el registro de varias formas desde la línea de comandos. Las utilidades Reg.exe y RegIni.exe están incluidas en Windows XP y en las versiones posteriores de Windows. Otras ubicaciones posibles en versiones antiguas de Windows pueden ser los CD del kit de recursos o el CD de instalación original de Windows. Además, se puede importar un archivo .REG desde la línea de comandos mediante el siguiente comando: RegEdit.exe /s file La /s significa que el archivo se fusionará silenciosamente con el registro. Si se omite el parámetro /s se le pedirá al usuario que confirme la operación. En Windows 98, Windows 95 y algunas configuraciones de Windows XP, el modificador /s también hace que RegEdit.exe ignore los ajustes del registro que permite que los administradores lo deshabiliten. Cuando se utiliza el modificador /s RegEdit.exe no devuelve un código de retorno adecuado si la operación falla, al contrario que Reg.exe, que sí lo hace.

RegEdit.exe /e file

exporta todo el registro a un archivo .REG, mientras que cualquiera estos

RegEdit.exe /e file HKEY_CLASSES_ROOT[\<key>]

RegEdit.exe /e file HKEY_CURRENT_CONFIG[\<key>]

RegEdit.exe /e file HKEY_CURRENT_USER[\<key>]

RegEdit.exe /e file HKEY_LOCAL_MACHINE[\<key>]

RegEdit.exe /e file HKEY_USERS[\<key>]

exporta únicamente la clave o subclave especificada. La asociación predeterminada para los archivos .REG en muchas versiones de Microsoft Windows. También se puede utilizar Reg.exe. Éste es un ejemplo para mostrar la versión del valor del registro: Version

Reg.exe QUERY HKLM\Software\Microsoft\ResKit /v Version

Otras opciones de línea de comandos incluyen un VBScript o un JScript junto con un CScript, WMI o WMIC.exe y Windows PowerShell. Los permisos del registro se pueden manipular a través de la línea de comando usando RegIni.exe y la herramienta SubInACL.exe. Por ejemplo, los permisos para la clave HKEY_LOCAL_MACHINE\SOFTWARE se pueden mostrar usando:

SubInACL.exe /keyreg HKEY_LOCAL_MACHINE\SOFTWARE /display

### Programas o scripts

El registro puede editarse mediante las API de la biblioteca avanzada API de Windows 32 (advapi32.dll).

Lista de las funciones API del registro :

| RegCloseKey | RegOpenKey | RegConnectRegistry | RegOpenKeyEx |
| - | - | - | - |
| RegCreateKey | RegQueryInfoKey | RegCreateKeyEx | RegQueryMultipleValues |
| RegDeleteKey | RegQueryValue | RegDeleteValue | RegQueryValueEx |
| RegEnumKey | RegReplaceKey | RegEnumKeyEx | RegRestoreKey |
| RegEnumValue | RegSaveKey | RegFlushKey | RegSetKeySecurity |
| RegGetKeySecurity | RegSetValue | RegLoadKey | RegSetValueEx |
| | RegNotifyChangeKeyValue | RegUnLoadKey | |

Muchos lenguajes de programación ofrecen clases o funciones integradas de biblioteca en tiempo de ejecución que rodean las API de Windows subyacentes, permitiendo de este modo que los programas almacenen configuraciones en el registro (p. ej., Microsoft.Win32.Registry en VB.NET y C#, o TRegistry en Delphi y Free Pascal). Las aplicaciones habilitadas para COM, como Visual Basic 6, pueden usar el objeto WScript.Shell. Otro método es usar la herramienta del kit de recursos de Windows, Reg.exe, ejecutándola desde el código, aunque esto se considera un estilo de programación muy pobre. Análogamente, los lenguajes para scrips como Perl (con Win32::TieRegistry), Windows Powershell y Windows Scripting Host también posibilitan la edición del registro desde scripts.

### Autorregistro COM

Antes de la introducción del COM de registro libre, se animaba a los desarrolladores a que añadieran código de inicialización a los códigos binarios in-process y out-of-process para realizar la configuración requerida para que funcionara ese objeto. Para binarios in-process como los archivos de tipo.DLL y.OCX, normalmente los módulos exportaban una función denominada DllInstall que podía ser llamada por los programas de instalación o ser invocada manualmente con utilidades como Regsvr32.exe; los binarios out-of-process normalmente eran compatibles con los argumentos de la línea de comandos /Regserver y /Unregserver que creaban o eliminaban la configuración del registro requerida. Las aplicaciones COM que se dañan debido a problemas del infierno de las DLL habitualmente se pueden reparar con RegSvr32.exe o con el conmutador /RegServer sin tener que volver a invocar los programas de instalación.

### Funcionalidad avanzada

Windows muestra las API que permiten que las aplicaciones de modo de usuario se registren para recibir un evento de notificación si se cambia una clave de RegConnectRegistry. Las API también están disponibles para permitir que las aplicaciones de modo núcleo filtren y modifiquen las llamadas al registro hechas por otras aplicaciones.

Además, Windows admite el acceso remoto al registro de otro equipo a través de la función RegConnectRegistry si el servicio Registro remoto se está ejecutando, está correctamente configurado y su tráfico de red no está protegido por cortafuegos

## Ubicaciones

El registro se almacena físicamente en varios archivos, generalmente ocultos de los API de modo de usuario utilizados para manipular datos del interior del registro. Dependiendo de la versión de Windows, habrá diferentes archivos y diferentes ubicaciones para dichos archivos, pero todos ellos se encuentran en el equipo local. La ubicación de los archivos de registro del sistema en Windows NT es \Windows\System32\Config; el subárbol de registro específico del usuario HKEY_CURRENT_USER se almacena en Ntuser.dat dentro del perfil del usuario. Hay uno para cada usuario; si un usuario tiene un perfil móvil, entonces dicho archivo se copiará desde y al servidor al iniciar sesión y al cerrar sesión respectivamente. Un segundo archivo de registro específico del usuario llamado UsrClass.dat contiene entradas de registro COM y por defecto no es móvil.

### Sistemas operativos basados en Windows NT

Los sistemas basados en Windows NT almacenan el registro en un formato de subárbol binario que puede ser exportado, cargado y descargado por el editor de registro de estos sistemas operativos. Los siguientes archivos de registro del sistema se almacenan en %SystemRoot%\System32\Config\:

* Sam – HKEY_LOCAL_MACHINE\SAM
* Security – HKEY_LOCAL_MACHINE\SECURITY
* Software – HKEY_LOCAL_MACHINE\SOFTWARE
* System – HKEY_LOCAL_MACHINE\SYSTEM
* Default – HKEY_USERS\.DEFAULT
* Userdiff - No asociado a un subárbol. Utilizado únicamente cuando se actualiza a una versión superior del sistema operativo.

El siguiente archivo se almacena en la carpeta del perfil de cada usuario:

* %UserProfile%\Ntuser.dat – HKEY_USERS\<User SID> (linked to by HKEY_CURRENT_USER)

Para Windows 2000, Server 2003 y Windows XP, el siguiente archivo adicional, específico para cada usuario, se usa para asociaciones entre archivos e información COM:

* %UserProfile%\Local Settings\Application Data\Microsoft\Windows\Usrclass.dat (path is localized) – HKEY_USERS\<User SID>_Classes (HKEY_CURRENT_USER\Software\Classes)

Para Windows Vista y posteriores, la ruta se cambió a:

* %UserProfile%\AppData\Local\Microsoft\Windows\Usrclass.dat (path is not localized) alias %LocalAppData%\Microsoft\Windows\Usrclass.dat – HKEY_USERS\<User SID>_Classes (HKEY_CURRENT_USER\Software\Classes)

Windows 2000 guardaba una copia alternativa de los subárboles del registro (.ALT) e intentaba cambiar a ella cuando detectaba daños. Windows XP y Windows Server 2003 no guardan un subárbol System.alt porque NTLDR en esas versiones de Windows puede procesar el archivo System.log para actualizar un subárbol de sistema que se ha vuelto incloherente durante un apagado o un bloqueo. Además, la carpeta %SystemRoot%\Repair contiene una copia de los subárboles del registro del sistema que se crearon después de la instalación y del primer inicio correcto de Windows.

### Windows 95, 98, y Me

Los archivos de registro están almacenados en el directorio %WINDIR% con los nombres USER.DAT y SYSTEM.DAT añadiéndose a ellos CLASSES.DAT en Windows Me. Además, cada perfil de usuario (si están activados los perfiles) tiene su propio archivo USER.DAT, ubicado en el directorio del perfil del usuario en %WINDIR%\Profiles\<username>\.

### Windows 3.11

El único archivo de registro se llama REG.DAT y se almacena en el directorio %WINDIR%.

## Copias de seguridad y recuperación

A lo largo de los años, las distintas ediciones de Windows han utilizado diversos métodos para hacer copias de seguridad y restaurar el registro, algunas de las cuales están obsoletas hoy en día:

* Restaurar sistema puede hacer copia de seguridad del registro y restaurarlo, siempre y cuando se pueda arrancar Windows, o desde el Entorno de recuperación de Windows arrancando con Windows Vista.
* NTBackup puede hacer copia de seguridad del registro como parte del Estado del sistema y restaurarla. Recuperación automática del sistema también puede restaurar el registro en Windows XP.
* En sistemas basados en Windows NT, la opción Última configuración válida conocida en el menú de inicio vuelve a enlazar la clave HKLM\SYSTEM\CurrentControlSet, la cual almacena información sobre controladores de hardware y de dispositivos.
* Windows 98 y Windows Me incluyen herramientas de comprobación del registro de línea de comandos (Scanreg.exe) y GUI (Scanregw.exe) para comprobar y arreglar la integridad del registro, crear por defecto hasta cinco copias automáticas de forma regular y restaurarlas manualmente o cuando se detecten daños. La herramienta de comprobación del registro hace por defecto una copia de seguridad del registro en %Windir%\Sysbckup Scanreg.exe también puede ejecutarse desde MS-DOS.
* El CD-ROM de Windows 95 incluía una Utilidad de recuperación de emergencia (ERU.exe) y una Herramienta de copia de seguridad de configuración (Cfgback.exe) para hacer copia de seguridad del registro y restaurarlo. Adicionalmente, Windows 95 hace copia de seguridad de los archivos system.da0 y user.da0 en cada arranque correcto.
* Windows NT 4.0 incluía RDISK.EXE, una utilidad para hacer copia de seguridad y restaurar todo el registro.
* El kit de recursos de Windows 2000 contenía un par de utilidades sin soporte técnico llamadas Regback.exe y RegRest.exe para hacer copias de seguridad y restaurar el registro

## Directivas

### Directiva de grupo

Windows 2000 y las versiones posteriores de Windows usan directivas de grupo para aplicar la configuración del registro. La directiva puede ser aplicada localmente a un único equipo usando gpedit.msc, o a varios usuarios y equipos dentro de un dominio usando gpmc.msc.

### Sistemas heredados

Con Windows 95, Windows 98, Windows Me y Windows NT, los administradores pueden usar un archivo especial y fusionarlo con el registro. Este archivo se llama archivo de directiva (POLICY.POL). El archivo de directiva permite que los administradores impidan a los usuarios sin privilegios de administrador cambiar las configuraciones del registro, por ejemplo el nivel de seguridad de Internet Explorer o el fondo de pantalla. El archivo de directiva se usa principalmente en los negocios con un gran número de equipos, en los que el negocio necesita protegerse de usuarios malintencionados o descuidados. La extensión predeterminada del archivo de directiva es .POL. El archivo de directiva filtra las configuraciones que aplica por usuario y por grupo (un "grupo" es un conjunto definido de usuarios). Para hacerlo, el archivo de directiva se fusiona con el registro, impidiendo que los usuarios lo esquiven volviendo a cambiar la configuración. El archivo de directiva normalmente se distribuye a través de una red LAN, pero puede introducirse en un equipo local. El archivo de directiva está creado por una herramienta gratuita de Microsoft denominada poledit.exe, válida para Windows 95/Windows 98, y con un módulo de administración del equipo para sistemas basados en NT. El editor necesita permisos de administrador para ejecutarse en los sistemas que usan permisos. El editor también puede cambiar directamente la configuración actual del registro del equipo local y, si el servicio de registro remoto está instalado e iniciado en otro equipo, también puede cambiar el registro de ese equipo. El editor de directivas carga la configuración que puede cambiar desde archivos .ADM, uno de los cuales está incluido, que contienen la configuración que proporciona el shell de Windows. El archivo .ADM es de texto sin formato y admite fácil localización, al permitir que todas las cadenas se almacenen en un lugar.

## Virtualización de archivos.INI

Los núcleos de Windows NT admiten el redireccionamiento de las API relacionadas con archivos INI a un archivo virtual en una ubicación de registro como HKEY_CURRENT_USER utilizando una función llamada "InifileMapping". Esta funcionalidad fue introducida para permitir que las aplicaciones antiguas escritas para versiones de Windows de 16 bits funcionaran en plataformas Windows NT, en las cuales la carpeta Sistema ya no está considerada como una ubicación adecuada para datos o configuraciones específicas de un usuario. Las aplicaciones de 32 bits no compatibles también pueden ser redireccionadas de esta forma, incluso aunque la función se pensara originalmente para aplicaciones de 16 bits.

## Virtualización del registro

Windows Vista ha introducido una virtualización del registro limitada, por lo que las aplicaciones escritas incorrectamente que no respetan el principio del privilegio mínimo y en su lugar tratan de escribir datos de usuario en una ubicación de solo lectura (como el subárbol HKEY_LOCAL_MACHINE), pueden ser redireccionadas a una ubicación más adecuada sin cambiar dicha aplicación. La operación es transparente para la aplicación, ya que ésta no sabe que sus operaciones de registro se han dirigido a otro lugar.

Análogamente, la virtualización de la aplicación redirige todas las operaciones de registro de una aplicación a una ubicación distinta al registro, como puede ser un archivo. Utilizado junto con la virtualización del archivo, este enfoque permite que las aplicaciones se ejecuten sin instalarlas en el equipo de la ubicación.

Los procesos de baja integridad también pueden utilizar la virtualización del registro. Por ejemplo, cuando Internet Explorer 7 y 8 funcionan en "modo protegido" en Windows Vista y superiores, automáticamente redirigirá la escritura del registro por parte de controles ActiveX a una ubicación en un espacio aislado (sandbox), para frustrar algunos tipos de vulnerabilidades de seguridad.

Por último, el Kit de herramientas de compatibilidad de aplicaciones proporciona correcciones de compatibilidad (shims) que pueden redirigir de forma transparente operaciones HKEY_LOCAL_MACHINE o HKEY_CLASSES_ROOT del registro a HKEY_CURRENT_USER para abordar errores "LUA" que causan que las aplicaciones no funcionen para usuarios limitados.

## Equivalencias en otros sistemas operativos

A diferencia del modelo de base de datos binario del registro de Windows, algunos sistemas operativos usan archivos separados de texto sin formato para el proceso daemon y la configuración de la aplicación, pero agrupan estas configuraciones para facilitar su administración.

* En los sistemas operativos de tipo Unix como Linux, que siguen el estándar de jerarquía del sistema de archivos, los archivos de configuración de todo el sistema (una información similar a la que aparecería en HKEY_LOCAL_MACHINE en Windows) se almacenan tradicionalmente en archivos en /etc/ y sus subdirectorios, o algunas veces en /usr/local/etc. La información por usuario (información que sería aproximadamente equivalente a la de HKEY_CURRENT_USER) se almacena en directorios y archivos ocultos (que comienzan con un punto) dentro del directorio de inicio del usuario. Sin embargo, las aplicaciones compatibles con XDG deben referirse a las variables de entorno definidas en la especificación del directorio base.
* Las aplicaciones que funcionan en el sistema operativo Mac OS X de Apple Inc. normalmente almacenan las configuraciones en archivos lista de propiedades que generalmente se almacenan en la carpeta Biblioteca de cada usuario.
* RISC OS usa directorios para los datos de configuración, lo que permite copiar las aplicaciones en directorios de aplicaciones, a diferencia del proceso de instalación separado típico de las aplicaciones de Windows; este enfoque también se usa en el ROX Desktop para Linux. Esta configuración basada en directorios también permite usar diferentes versiones de la misma aplicación, ya que la configuración se hace "sobre la marcha". Si se desea eliminar la aplicación, es posible borrar simplemente la carpeta perteneciente a la aplicación. A menudo esta acción no eliminará los ajustes de configuración que se almacenan separados de la aplicación, normalmente dentro de la estructura !Boot del equipo, en !Boot.Choices, o puede que en cualquier lugar de un servidor de la red. Cuando se está ejecutando el SO RISC, se pueden copiar programas entre equipos copiando los directorios de las aplicaciones pertenecientes a dichos programas. Sin embargo, algunos programas pueden requerir su reinstalación, por ejemplo cuando los archivos compartidos están ubicados fuera del directorio de una aplicación.
* IBM AIX (una variante de Unix) usa un componente de registro llamado Object Data Manager (ODM). El ODM se usa para almacenar información de la configuración del sistema y de los dispositivos. Un amplio conjunto de herramientas y utilidades proporcionan a los usuarios los medios para ampliar, comprobar y corregir la base de datos ODM. El ODM almacena su información en varios archivos; la ubicación predeterminada es /etc/objrepos.
* El entorno de escritorio GNOME usa una interfaz parecida a un registro denominada GConf, para almacenar los ajustes de configuración del escritorio y de las aplicaciones. Sin embargo, en GConf todas las configuraciones de aplicaciones se almacenan en archivos independientes; de este modo se elimina parcialmente el punto único de fallo.
* La Iniciativa Elektra proporciona un "back-end" alternativo para los archivos de texto de configuración del sistema operativo Linux, parecido al registro.
* Aunque no es un sistema operativo, la capa de compatibilidad Wine, que permite que el software de Windows funcione en un sistema de tipo Unix, también emplea un registro del mismo tipo que el registro de Windows, a modo de archivos de texto, en la carpeta WINEPREFIX: system.reg (HKEY_LOCAL_MACHINE), user.reg (HKEY_CURRENT_USER) y userdef.reg.
