Registro de Windows
Adrián Lois
ASIR - IMSO
¿Qué es el Registro de Windows?
• Base de datos jerárquica
• Almacena ajustes de configuración, opciones,
información sobre ajustes en aplicaciones de terceros,
configuraciones de controladores, interfaz de usuario. De
S.O. MS Windows.
Estructura jerárquica
Llamadas “Ramas”:
• HKEY_CLASSES_ROOT {HKCR}
• HKEY_CURRENT_USER {HKCU}
• HKEY_LOCAL_MACHINE {HKLM}
• HKEY_USERS {HKU}
• HKEY_CURRENT_CONFIG {HKCC}
HKEY_CLASSES_ROOT
• Contiene información sobre
aplicaciones registradas
• HKCR es una compilación de
HKCUSoftwareClasses basada
en el usuario y de
HKLMSoftwareClasses basada
en el equipo
HKEY_LOCAL_MACHINE
• Almacena configuraciones específicas del equipo
local.
• Las claves no se almacenan en disco. El núcleo del
sistema las mantiene en la memoria para asignar
allí las de más subclaves.
• Es una compilación de HKCUSoftwareClasses
basada en el usuario y de HKLMSoftwareClasses
basada en el equipo
• Contiene principalmente las subclaves: SAM,
SECURITY, SYSTEM y SOFTWARE. Estas se cargan
en el tiempo de arranque en sus respectivos
archivos (%SystemRoot%System32config).
• La subclave HARDWARE, es volátil y no se
almacena en un archivo. Muestra la vista de los
dispositivos PnP.
• La subclave BCD (Boot Configuration Data) se
almacena en memoria, almacenando los datos de
la configuración de arranque.
HKEY_USERS
• Contiene subclaves correspondientes
a las claves HKEY_CURRENT_USER de
cada perfil de usuario cargado
activamente en el equipo.
• Cargan los subárboles de usuario
correspondientes a los usuarios con
sesión iniciada en el algún momento.
HKEY_CURRENT_USER
• Almacena configuraciones específicas del
usuario con sesión iniciada en ese momento.
• La clave HKCU es un enlace a la subclave de
HKEY_USERS correspondiente al usuario.
• La configuración de cada usuario se almacena
en el archivo de perfil del usuario
%userprofile%NTUSER.DAT y
%UserProfile%AppDataLocalMicrosoftWi
ndowsUsrclass.dat
• Las configuraciones almacenadas en en esta
clave y por lo tanto alamacenadas en dicho
fichero, siguen de equipo en equipo a los
usuarios con perfil móvil.
HKEY_CURRENT_CONFIG
• Contiene información sobre la
subclave
HKLMSYSTEMCurrentControlSet
Hardware ProfileCurrent.
• Almacena la información sobre el
perfil de hardware que se está
utilizando en ese momento.
Tipos de valor de datos
• REG_SZ (valor cadena): Cadena de texto de longitud fija.
• REG_BINARY (valor binario): Datos binarios sin formato.
Información sobre componentes de hardware
• REG_DWORD (32bits) o REG_QWORD (64 bits): Datos
representados por un número de 4 bytes (32bits).
Parámetros de controladores de dispositivo y servicios
son de este tipo
• REG_EXPAND_SZ (cadena extensible): Cadena de
longitud variable. Variables que se resuelven cuando un
programa o servicio utiliza determinados datos.
• REG_MULTI_SZ (cadena múltiple): Cadena múltiple.
Tipos de valor de datos
REG_SZ REG_BINARY REG_DWORD (32bits)
REG_QWORD (64 bits)
Tipos de valor de datos
REG_EXPAND_SZ REG_MULTI_SZ
REGEDIT.exe
Formas de editar el registro de Windows
• Editor de políticas de grupo local (gpedit.msc)
• Ficheros .INF (INFormation) almacenan información de
software los cuales pueden estar en sintaxis compatible con
regedit y cargar valores iniciales de configuración de un
determinado programa. Normalmente usados por las APIs.
• Archivos VBScript.
• Archivos de registro .REG.
• Ficheros por lotes .BAT (batch files)
regedit.exe vrs. gpedit.msc
Ejemplo fichero .INF
[Version]
Signature=$CHICAGO$
[DefaultInstall]
AddReg=Add.Settings
DelReg=Del.Settings
[Add.Settings]
HKCR, regfileshell,,0,"edit"
[Del.Settings]
HKCU,SoftwareMicrosoftWindowsCurrentVersionAppletsRegedit
Ejemplo fichero .vbs - VBScript
WSH (Windows Scripting Host)
• .RegWrite: Crear o modificar claves y valores.
• .RegRead: Leer e interpretar valores.
• .RegDelete: Eliminar claves y valores.
• .Run: Para iniciar programas o aplicaciones.
Crear una nueva clave:
wshShell.RegWrite "HKCUTestKey", ""
Crear un nuevo valor DWORD:
wshShell.RegWrite "HKCUTestKeyDWordTestValue", 1, "REG_DWORD"
Crea una nueva subclave y un valor de cadena en esa nueva subclave:
wshShell.RegWrite "HKCUTestKeySubKeyStringTestValue", "Test", "REG_SZ"
Leer los valores anteriores:
WScript.Echo "HKCUTestKeyDWordTestValue = " _
& wshShell.RegRead( "HKCUTestKeyDWordTestValue" )
WScript.Echo "HKCUTestKeySubKeyStringTestValue = """ _
& wshShell.RegRead( "HKCUTestKeySubKeyStringTestValue" ) & """"
Eliminar la subclave, la clave y los valores que contienen:
wshShell.RegDelete "HKCUTestKeySubKey"
wshShell.RegDelete "HKCUTestKey"
Modificar el registro con ficheros .REG
Windows Registry Editor Version 5.00
Para crear una clave:
[HKEY_CURRENT_USERSoftwareMiPrograma]
Un valor contenido en la clave anterior:
[HKEY_CURRENT_USERSoftwareMiPrograma]
"mi_valor"="como"
Para eliminar una clave antepone un signo menos (-):
[-HKEY_CURRENT_USERSoftwareMiPrograma]
Windows Registry Editor Version 5.00
Para eliminar un valor:
[HKEY_CURRENT_USERSoftwareMiPrograma]
"valor a quitar"=-
Al crear cualquier valor, se supone que es una cadena, por ejemplo para crear un valor
DWORD es necesario especificarlo:
[HKEY_CURRENT_USERSoftwareMiPrograma]
"mi_valor"= dword:000001
Si el carácter punto y coma (;) está delante de cualquier línea se ignora y es
considerada como un comentario:
[HKEY_CURRENT_USERSoftwareMiPrograma]
; esta línea es un comentario
Se guardan en ficheros con extensión .reg y se ejecutan, dependiendo lo que
se necesite modificar se necesitarán o no altos privilegios de usuario.
Ejemplos ficheros .REG
• Añadir opciones de apagar y reiniciar
el equipo en el menú contextual de
clic derecho
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOTDesktopBackgroundShellApagar]
[HKEY_CLASSES_ROOTDesktopBackgroundShellApagarcommand]
@="shutdown /s /t 0“
[HKEY_CLASSES_ROOTDesktopBackgroundShellReiniciar]
[HKEY_CLASSES_ROOTDesktopBackgroundShellReiniciarcommand]
@="shutdown /r /t 0"
• Ejecutar aplicaciones en el arranque del
sistema
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRun]
"MySQLWorkbench"="REG_EXPAND_SZ:C:Program FilesMySQLMySQL
Workbench 6.3 CEMySQLWorkbench.exe"
• Desactivar opciones de carpeta e opciones
de IE
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionPolicies
Explorer]
"NoFolderOptions"=dword:0000001
[HKEY_CURRENT_USERSoftwarePoliciesMicrosoftInternet
ExplorerRestrictions]
"NoBrowserOptions"=dword:00000001
• Deshabilitar el clic derecho del
mouse
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVers
ionPoliciesExplorer]
"NoViewContextMenu"=dword:00000001
Modificar el registro desde una consola de
comandos CMD
• Sintaxis
REG ADD Clave /v NombreValor /t TipoDato /d Dato [/f]
REG DELETE Clave /v NombreValor [/f]
Se ejecutan directamente desde la consola de comandos CMD de Windows. Aunque
la misma sintaxis sería válida para procesos por lotes .bat
Modificadores de REG
• /v Nombre del valor de clave seleccionada
• /s Se especifican todas las subclaves y valores de forma recursiva
• /f Fuerza la sobre escritura o eliminación sin avisar (opcional)
• /ve Establece valor vacío predeterminado (REG ADD)
• /d Datos que se asignan al nombre de valor (REG ADD)
• /va Elimina todos los valores en la clave actual (REG DELETE)
• /t Tipos de datos. Los tipos válidos son:
REG_SZ, REG_MULTI_SZ, REG_EXPAND_SZ, REG_DWORD,
REG_QWORD, REG_BINARY, REG_NONE
Comparativa con ficheros .REG y el
comando REG
Fichero .reg:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USERPrueba]
"test"=dword:1
Consola de comandos CMD:
@echo off
REG ADD "HKCUPrueba" /v test /t REG_DWORD /d 1 /f
Ejemplos comando REG
• Ocultar unidad D:
REG ADD KEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionPoliciesExplorer /v NoDrives /t
reg_dword /d 00000008
• Deshabilitar el Administrador de tareas
REG ADD HKCUSoftwareMicrosoftWindowsCurrentVersionPoliciesSystem /v DisableTaskMgr /t
REG_DWORD /d 1 /f
• Mostrar la clave, valor y datos que coincidan con 0F bajo la clave HKCU de los datos de tipo REG_BINARY.
REG QUERY HKCU /f 0F /d /t REG_BINARY
• Eliminar el valor del registro datoprueba HKLMSoftwareprueba
REG DELETE HKLMSoftwareprueba /v datoprueba
• Modificar el puerto por defecto de RDP (Remote Desktop Protocol).
REG ADD HKLMSYSTEMCurrentControlSetControlTerminal ServerWinStationsRDP-Tcp /v PortNumber /t
REG_DWORD /d ea60 /f
• Hacer lo mismo pero para un equipo remoto, donde el nombre del equipo remoto sea SATURNO
REG DELETE SATURNOHKLMSoftwareMiCo /v MTU
Uso del comando REGEDIT
• REGEDIT Abre el editor del registro
• REGEDIT /E ruta Exporta el registro
• REGEDIT /E ruta "Rama" Exporta parte del registro, sustituye Rama por el
árbol correspondiente
• REGEDIT ruta Importa un archivo REG
• REGEDIT /S ruta Importa un archivo REG de forma silenciosa
No modifica el registro, simplemente nos permite gestionar
exportaciones e importaciones
Búsqueda, permisos,
exportación e importación
del registro
Administración de registro de red remoto
Habilitar registro remoto
en una consola CMD:
SC START RemoteRegistry
API del registro propia de MS Windows
• Librería para la API de Windows “advapi32.dll”.
• Muchos lenguajes de programación ofrecen clases o funciones
integradas para esta API. Permitiendo que los programas
almacenen configuraciones en el registro.
• Funcionalidades para poder interactuar con el registro a través
de aplicaciones de terceros, son gracias al conjunto de funciones
que ofrece la API
Claves más usadas del registro
¿Conocer la clave y valor que afecta al cambio
que queremos realizar de la forma más rápida?
Analizar si funciona y es coherente con lo que queremos realizar
Desgranando de forma
lógica debes, para el valor
correcto encontrar…
¿Preguntas?
$>WHOAMI
adrianlois@zonasystem.com
https://zonasystem.com
@adrianlois_

Estructura del Registro de Windows

  • 1.
  • 2.
    ¿Qué es elRegistro de Windows? • Base de datos jerárquica • Almacena ajustes de configuración, opciones, información sobre ajustes en aplicaciones de terceros, configuraciones de controladores, interfaz de usuario. De S.O. MS Windows.
  • 3.
    Estructura jerárquica Llamadas “Ramas”: •HKEY_CLASSES_ROOT {HKCR} • HKEY_CURRENT_USER {HKCU} • HKEY_LOCAL_MACHINE {HKLM} • HKEY_USERS {HKU} • HKEY_CURRENT_CONFIG {HKCC}
  • 4.
    HKEY_CLASSES_ROOT • Contiene informaciónsobre aplicaciones registradas • HKCR es una compilación de HKCUSoftwareClasses basada en el usuario y de HKLMSoftwareClasses basada en el equipo
  • 5.
    HKEY_LOCAL_MACHINE • Almacena configuracionesespecíficas del equipo local. • Las claves no se almacenan en disco. El núcleo del sistema las mantiene en la memoria para asignar allí las de más subclaves. • Es una compilación de HKCUSoftwareClasses basada en el usuario y de HKLMSoftwareClasses basada en el equipo • Contiene principalmente las subclaves: SAM, SECURITY, SYSTEM y SOFTWARE. Estas se cargan en el tiempo de arranque en sus respectivos archivos (%SystemRoot%System32config). • La subclave HARDWARE, es volátil y no se almacena en un archivo. Muestra la vista de los dispositivos PnP. • La subclave BCD (Boot Configuration Data) se almacena en memoria, almacenando los datos de la configuración de arranque.
  • 6.
    HKEY_USERS • Contiene subclavescorrespondientes a las claves HKEY_CURRENT_USER de cada perfil de usuario cargado activamente en el equipo. • Cargan los subárboles de usuario correspondientes a los usuarios con sesión iniciada en el algún momento.
  • 7.
    HKEY_CURRENT_USER • Almacena configuracionesespecíficas del usuario con sesión iniciada en ese momento. • La clave HKCU es un enlace a la subclave de HKEY_USERS correspondiente al usuario. • La configuración de cada usuario se almacena en el archivo de perfil del usuario %userprofile%NTUSER.DAT y %UserProfile%AppDataLocalMicrosoftWi ndowsUsrclass.dat • Las configuraciones almacenadas en en esta clave y por lo tanto alamacenadas en dicho fichero, siguen de equipo en equipo a los usuarios con perfil móvil.
  • 8.
    HKEY_CURRENT_CONFIG • Contiene informaciónsobre la subclave HKLMSYSTEMCurrentControlSet Hardware ProfileCurrent. • Almacena la información sobre el perfil de hardware que se está utilizando en ese momento.
  • 9.
    Tipos de valorde datos • REG_SZ (valor cadena): Cadena de texto de longitud fija. • REG_BINARY (valor binario): Datos binarios sin formato. Información sobre componentes de hardware • REG_DWORD (32bits) o REG_QWORD (64 bits): Datos representados por un número de 4 bytes (32bits). Parámetros de controladores de dispositivo y servicios son de este tipo • REG_EXPAND_SZ (cadena extensible): Cadena de longitud variable. Variables que se resuelven cuando un programa o servicio utiliza determinados datos. • REG_MULTI_SZ (cadena múltiple): Cadena múltiple.
  • 10.
    Tipos de valorde datos REG_SZ REG_BINARY REG_DWORD (32bits) REG_QWORD (64 bits)
  • 11.
    Tipos de valorde datos REG_EXPAND_SZ REG_MULTI_SZ
  • 12.
  • 13.
    Formas de editarel registro de Windows • Editor de políticas de grupo local (gpedit.msc) • Ficheros .INF (INFormation) almacenan información de software los cuales pueden estar en sintaxis compatible con regedit y cargar valores iniciales de configuración de un determinado programa. Normalmente usados por las APIs. • Archivos VBScript. • Archivos de registro .REG. • Ficheros por lotes .BAT (batch files)
  • 14.
  • 15.
    Ejemplo fichero .INF [Version] Signature=$CHICAGO$ [DefaultInstall] AddReg=Add.Settings DelReg=Del.Settings [Add.Settings] HKCR,regfileshell,,0,"edit" [Del.Settings] HKCU,SoftwareMicrosoftWindowsCurrentVersionAppletsRegedit
  • 16.
    Ejemplo fichero .vbs- VBScript WSH (Windows Scripting Host) • .RegWrite: Crear o modificar claves y valores. • .RegRead: Leer e interpretar valores. • .RegDelete: Eliminar claves y valores. • .Run: Para iniciar programas o aplicaciones. Crear una nueva clave: wshShell.RegWrite "HKCUTestKey", "" Crear un nuevo valor DWORD: wshShell.RegWrite "HKCUTestKeyDWordTestValue", 1, "REG_DWORD" Crea una nueva subclave y un valor de cadena en esa nueva subclave: wshShell.RegWrite "HKCUTestKeySubKeyStringTestValue", "Test", "REG_SZ" Leer los valores anteriores: WScript.Echo "HKCUTestKeyDWordTestValue = " _ & wshShell.RegRead( "HKCUTestKeyDWordTestValue" ) WScript.Echo "HKCUTestKeySubKeyStringTestValue = """ _ & wshShell.RegRead( "HKCUTestKeySubKeyStringTestValue" ) & """" Eliminar la subclave, la clave y los valores que contienen: wshShell.RegDelete "HKCUTestKeySubKey" wshShell.RegDelete "HKCUTestKey"
  • 17.
    Modificar el registrocon ficheros .REG Windows Registry Editor Version 5.00 Para crear una clave: [HKEY_CURRENT_USERSoftwareMiPrograma] Un valor contenido en la clave anterior: [HKEY_CURRENT_USERSoftwareMiPrograma] "mi_valor"="como" Para eliminar una clave antepone un signo menos (-): [-HKEY_CURRENT_USERSoftwareMiPrograma] Windows Registry Editor Version 5.00 Para eliminar un valor: [HKEY_CURRENT_USERSoftwareMiPrograma] "valor a quitar"=- Al crear cualquier valor, se supone que es una cadena, por ejemplo para crear un valor DWORD es necesario especificarlo: [HKEY_CURRENT_USERSoftwareMiPrograma] "mi_valor"= dword:000001 Si el carácter punto y coma (;) está delante de cualquier línea se ignora y es considerada como un comentario: [HKEY_CURRENT_USERSoftwareMiPrograma] ; esta línea es un comentario Se guardan en ficheros con extensión .reg y se ejecutan, dependiendo lo que se necesite modificar se necesitarán o no altos privilegios de usuario.
  • 18.
    Ejemplos ficheros .REG •Añadir opciones de apagar y reiniciar el equipo en el menú contextual de clic derecho Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOTDesktopBackgroundShellApagar] [HKEY_CLASSES_ROOTDesktopBackgroundShellApagarcommand] @="shutdown /s /t 0“ [HKEY_CLASSES_ROOTDesktopBackgroundShellReiniciar] [HKEY_CLASSES_ROOTDesktopBackgroundShellReiniciarcommand] @="shutdown /r /t 0" • Ejecutar aplicaciones en el arranque del sistema Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRun] "MySQLWorkbench"="REG_EXPAND_SZ:C:Program FilesMySQLMySQL Workbench 6.3 CEMySQLWorkbench.exe" • Desactivar opciones de carpeta e opciones de IE Windows Registry Editor Version 5.00 [HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionPolicies Explorer] "NoFolderOptions"=dword:0000001 [HKEY_CURRENT_USERSoftwarePoliciesMicrosoftInternet ExplorerRestrictions] "NoBrowserOptions"=dword:00000001 • Deshabilitar el clic derecho del mouse Windows Registry Editor Version 5.00 [HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVers ionPoliciesExplorer] "NoViewContextMenu"=dword:00000001
  • 19.
    Modificar el registrodesde una consola de comandos CMD • Sintaxis REG ADD Clave /v NombreValor /t TipoDato /d Dato [/f] REG DELETE Clave /v NombreValor [/f] Se ejecutan directamente desde la consola de comandos CMD de Windows. Aunque la misma sintaxis sería válida para procesos por lotes .bat
  • 20.
    Modificadores de REG •/v Nombre del valor de clave seleccionada • /s Se especifican todas las subclaves y valores de forma recursiva • /f Fuerza la sobre escritura o eliminación sin avisar (opcional) • /ve Establece valor vacío predeterminado (REG ADD) • /d Datos que se asignan al nombre de valor (REG ADD) • /va Elimina todos los valores en la clave actual (REG DELETE) • /t Tipos de datos. Los tipos válidos son: REG_SZ, REG_MULTI_SZ, REG_EXPAND_SZ, REG_DWORD, REG_QWORD, REG_BINARY, REG_NONE
  • 21.
    Comparativa con ficheros.REG y el comando REG Fichero .reg: Windows Registry Editor Version 5.00 [HKEY_CURRENT_USERPrueba] "test"=dword:1 Consola de comandos CMD: @echo off REG ADD "HKCUPrueba" /v test /t REG_DWORD /d 1 /f
  • 22.
    Ejemplos comando REG •Ocultar unidad D: REG ADD KEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionPoliciesExplorer /v NoDrives /t reg_dword /d 00000008 • Deshabilitar el Administrador de tareas REG ADD HKCUSoftwareMicrosoftWindowsCurrentVersionPoliciesSystem /v DisableTaskMgr /t REG_DWORD /d 1 /f • Mostrar la clave, valor y datos que coincidan con 0F bajo la clave HKCU de los datos de tipo REG_BINARY. REG QUERY HKCU /f 0F /d /t REG_BINARY • Eliminar el valor del registro datoprueba HKLMSoftwareprueba REG DELETE HKLMSoftwareprueba /v datoprueba • Modificar el puerto por defecto de RDP (Remote Desktop Protocol). REG ADD HKLMSYSTEMCurrentControlSetControlTerminal ServerWinStationsRDP-Tcp /v PortNumber /t REG_DWORD /d ea60 /f • Hacer lo mismo pero para un equipo remoto, donde el nombre del equipo remoto sea SATURNO REG DELETE SATURNOHKLMSoftwareMiCo /v MTU
  • 23.
    Uso del comandoREGEDIT • REGEDIT Abre el editor del registro • REGEDIT /E ruta Exporta el registro • REGEDIT /E ruta "Rama" Exporta parte del registro, sustituye Rama por el árbol correspondiente • REGEDIT ruta Importa un archivo REG • REGEDIT /S ruta Importa un archivo REG de forma silenciosa No modifica el registro, simplemente nos permite gestionar exportaciones e importaciones
  • 24.
    Búsqueda, permisos, exportación eimportación del registro
  • 25.
    Administración de registrode red remoto Habilitar registro remoto en una consola CMD: SC START RemoteRegistry
  • 26.
    API del registropropia de MS Windows • Librería para la API de Windows “advapi32.dll”. • Muchos lenguajes de programación ofrecen clases o funciones integradas para esta API. Permitiendo que los programas almacenen configuraciones en el registro. • Funcionalidades para poder interactuar con el registro a través de aplicaciones de terceros, son gracias al conjunto de funciones que ofrece la API
  • 27.
    Claves más usadasdel registro
  • 28.
    ¿Conocer la clavey valor que afecta al cambio que queremos realizar de la forma más rápida? Analizar si funciona y es coherente con lo que queremos realizar
  • 29.
    Desgranando de forma lógicadebes, para el valor correcto encontrar…
  • 30.