Saltar al contenido principal

Registro de Windows

Contexto e historia​

  • Antes de Windows 95

    • Configuración almacenada en archivos de texto (INI) distribuidos en varios lugares.
    • Problemas: duplicación, incoherencias, dificultad de gestión centralizada.
  • Introducción del registro

    • Windows 95 inaugura la base de registro (Registry): un almacén jerárquico centralizado.
    • Objetivo: unificar la configuración del sistema y de las aplicaciones.

Por qué existe el registro​

  • Centralización

    • Sustituye los múltiples INI, CFG y .INF.
  • Jerarquización

    • Estructura de árbol clave/valor, más estructurada que los archivos planos.
  • Rendimiento y atomicidad

    • Lectura/escritura optimizada, soporte para transacciones parciales.
  • Seguridad

    • ACL (permisos estilo NTFS) en cada clave del registro.

Estructura general​

El registro está organizado en hives (colmenas). Cada hive corresponde a un gran archivo almacenado en disco (bajo %SystemRoot%\System32\Config para las hives de máquina, y en el perfil de usuario para HKCU).

HiveArchivoContenido principal
HKEY_LOCAL_MACHINE (HKLM)SYSTEM, SOFTWARE, etc.Configuración de la máquina (todos los usuarios)
HKEY_CURRENT_USER (HKCU)%USERPROFILE%\NTUSER.DATConfiguración del perfil actual
HKEY_USERSTodos los perfiles de usuarioReúne el HKCU de cada usuario
HKEY_CLASSES_ROOT (HKCR)Fusión de HKLM\SOFTWARE\Classes y HKCU\Software\ClassesAsociaciones de archivos, COM
HKEY_CURRENT_CONFIGEnlace a la configuración de hardware activaParámetros de hardware dinámicos

Claves, subclaves y valores​

  • Clave: equivalente a una carpeta (contiene subclaves y valores).

  • Valor: par (Nombre, Tipo, Dato).

    • Tipos comunes:

      • REG_SZ (cadena),
      • REG_DWORD (entero de 32 bits),
      • REG_QWORD (entero de 64 bits),
      • REG_MULTI_SZ (arreglo de cadenas),
      • REG_BINARY (datos en bruto).

Registry Editor (regedit.exe)​

  • Funcionalidades

    • Navegación visual del árbol.
    • Exportar/Importar .reg.
    • Modificar ACL (clic derecho → Permisos).
  • Advertencias

    • A menudo requiere privilegios de administrador.
    • Una modificación incorrecta puede volver inestable Windows.

El provider Registry en PowerShell​

PowerShell expone el registro como un provider tipo sistema de archivos:

  • Raíces: HKLM: y HKCU:
  • Posibilidad de navegar con Set-Location, Get-ChildItem, etc.

Ejemplos prácticos con PowerShell​

peligro

Pruebe estos ejemplos en su máquina virtual

# Listar las hives de máquina
Get-ChildItem -Path Registry::HKLM

# Listar las claves bajo SOFTWARE
Get-ChildItem -Path HKLM:\SOFTWARE

Leer valores​

# Valor de una clave
Get-ItemProperty -Path 'HKCU:\Control Panel\Desktop' -Name Wallpaper

# Leer todas las propiedades
Get-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Lsa'

Probar la existencia de una clave o un valor​

# ¿Clave existente?
Test-Path -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion'

# ¿Valor existente?
(Get-ItemProperty -Path HKCU:\... -Name 'NomValeur' -ErrorAction SilentlyContinue) -ne $null

Crear una subclave y un valor​

aviso

Reemplace Username por su nombre de usuario

# Crear la clave MyApp
New-Item -Path 'HKCU:\Software\Username\MyApp' -Force

# Agregar un valor de cadena
New-ItemProperty -Path 'HKCU:\Software\Username\MyApp' `
-Name 'MessageBienvenue' `
-Value 'Bienvenue dans MyApp!' `
-PropertyType String -Force

# Agregar un DWORD
New-ItemProperty -Path 'HKCU:\Software\Username\MyApp' `
-Name 'Enabled' `
-Value 1 `
-PropertyType DWord -Force

Modificar un valor existente​

# Desactivar el inicio rápido (ejemplo de sistema)
Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Power' `
-Name 'HiberbootEnabled' `
-Value 0

Eliminar una clave o un valor​

aviso

Reemplace Username por su nombre de usuario

# Eliminar un valor
Remove-ItemProperty -Path 'HKCU:\Software\Username\MyApp' -Name 'MessageBienvenue'

# Eliminar la subclave completa
Remove-Item -Path 'HKCU:\Software\Username\MyApp' -Recurse -Force

Exportar e importar​

aviso

Reemplace Username por su nombre de usuario

# Exportar una rama a .reg
reg export "HKCU\Software\Username\MyApp" C:\temp\myapp.reg /y

# Importar un .reg
reg import C:\temp\myapp.reg

Ejemplo avanzado: cambiar el fondo de pantalla​

# Definir la ruta de la imagen
$wall = 'C:\Images\montagne.jpg'

# Modificar la clave
Set-ItemProperty -Path 'HKCU:\Control Panel\Desktop' `
-Name 'Wallpaper' `
-Value $wall

# Actualizar la visualización
Add-Type -AssemblyName user32
[User32]::SystemParametersInfo(0x0014, 0, $wall, 0x0002)

Seguridad y buenas prácticas​

  • Hacer una copia de seguridad antes de modificar

    reg export "HKLM\SOFTWARE" C:\backup\software-hive.reg /y
  • Utilizar -WhatIf y -Confirm

    Remove-Item -Path 'HKCU:\Software\Test' -Recurse -WhatIf
  • Preferir PowerShell a reg.exe para la automatización

  • Restringir los ACL

    • Verificar/modificar mediante Get-Acl / Set-Acl si es necesario.

Para recordar​

  1. El registro es el núcleo de la configuración de Windows, centralizado y jerárquico.
  2. Sustituye los archivos INI: más robusto, seguro y eficiente.
  3. Cada hive corresponde a un contexto (máquina/usuario).
  4. PowerShell ofrece un provider nativo para navegar y modificar el registro en scripts.
  5. Siempre haga una copia de seguridad y pruebe antes de cualquier modificación en producción.