miércoles, 8 de agosto de 2018

Registros de Windows

Definición

El Registro de Windows, es una base de datos que almacena las configuraciones y opciones del sistema operativo Microsoft Windows.
Contiene información y configuraciones de todo el hardware, software, usuarios, y preferencias del PC. Si un usuario hace cambios en las configuraciones del “Panel de control”, en las asociaciones de ficheros, en las políticas del sistema o en el software instalado, los cambios son reflejados y almacenados en el registro.
El Registro se almacena en varios ficheros que, dependiendo de la versión de Windows, se ubican en diferentes lugares dentro del sistema local, excepto NTuser (o archivo de usuario), que puede ser ubicado en otra máquina para permitir perfiles móviles.

Estructura

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 distinguie 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 disco, sino que el núcleo del sistema la mantiene en la memoria para asignar allí las demás subclaves. Las aplicaciones no pueden crear subclaves adicionales. En las versiones 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)
Hardware CPI gestión avanzada de energía
Description Información del microprocesador
DeviceMap Información del ratón, teclado, puertos.
SAM Configuración de seguridad, está protegida.
Security Configuración de seguridad, está protegida. Se utiliza cuando estamos en un dominio.
Software Información de programas instalados, fecha, versión, licencia, colores Classes es HKCR.
System Información sobre perfiles de Hardware, controladores, unidades de disco.


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.
.html Acciones a tomar con archivos de extension .html
.htmlfile Acciones a tomar con los tipos de archivos htmlfile (Un tipo de archivo puede estar asociado a varias extensiones)
Directory Acciones a tomar con directorios (contienen otros directorios o carpetas en su interior)
Folder Acciones a tomar con carpetas
Drive Acciones a tomar con unidades
CLSID Registro de todas las carpetas CLSID o identificadores de clase del sistema.


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 sólo 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.
AppEvents Sonidos
Console Configuración de la consola de cmd.
Control Panel Configuración del Panel de control
Enviroment Variables de entorno agregadas por el usuario.
Software\Microsoft\Windows\CurrentVersion Clave importantísima porque aquí está la configuración de muchos aspectos de Windows.


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 sólo 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. 

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​


1 comentario:

Fidel dijo...

Que grande Agustín!! Parece muy interesante el blog, voy a seguir leyendo.