Windows Registry Editor
Made by K3rnelPan1c#5750
ÍNDICE
● Introducción
● ¿Para qué sirve?
● Su interfaz.
● Tipos de datos.
● Tipos de usuarios.
● Claves lógicas, físicas y dinámicas.
● Claves en el registro.
○ Hive Key Classes Root
○ Hive Key Current User
○ Hive Key Local Machine
○ Hive Key Users
○ Hive Key Current Config
○ Hive Key Performance * y HKCU_Local_Settings.
● El registro REAL y los Hives.
● Referencias.
Antes de comenzar...
Todo el contenido de este documento ha sido creado por K3rnelPan1c#5750. Si desea utilizarlo
para realizar comentarios en videos o extraer información del mismo, se deberán otorgar los
créditos correspondientes.
Además, es importante tener en cuenta que no puede confirmarse la veracidad absoluta de
todos los datos proporcionados en este informe. El objetivo principal de este documento es dar
a conocer aspectos interesantes relacionados con el tema en cuestión. Se realizaron
esfuerzos para garantizar la precisión de la información, pero se recomienda siempre
consultar fuentes adicionales y actualizadas para obtener una visión completa.
Finalizando esta aclaración, podemos dar inicio al contenido.
● Introducción
En este informe vamos a tratar todo lo relacionado al editor del registro de windows
(regedit.exe), vamos a ver como funciona y cómo sacarle provecho sin obtener mayores
complicaciones. Trataremos algunas aplicaciones interesantes y comentaremos cada pequeño
detalle de esta parte esencial de Windows.
● ¿Para qué sirve?
Regedit es una herramienta la cual permite realizar CRUD (Create, Read, Update, Delete).
Su función es la de una B.D. (Base de Datos), esta misma aplicación te permite ver la
información, buscar dentro de la misma, importar y exportar valores/datos del registro, crear
claves y subclaves, y realizar copias de seguridad.
Como bien dije antes, el regedit es una BD; por lo tanto es usada para almacenar información. Al
momento de utilizar una aplicación puedes utilizar el registro para almacenar su configuración,
para que x aplicación se ejecute automáticamente, para modificar la ejecución de un servicio,
para monitorear diversos cambios en el sistema (logs).
Esta base de datos es jerárquica y centralizada. En cuanto a la jerarquía podemos observar que
el registro se compone de claves, subclaves y valores; estos mismos se organizan como una
estructura de árbol
Existen tres claves principales dentro del registro de Windows, estas son: HKLM
(HKEY_LOCAL_MACHINE), HKCU (HKEY_CURRENT_USER), HKCR (HKEY_CLASSES_ROOT).
Estas claves las vamos a tratar más adelante en “claves en el registro”.
En cuanto a la centralización, esto significa que la información se almacena en un único
archivo. Es mucho más fácil de administrar y brinda una mayor consistencia en el sistema;
gracias a esto es posible acceder al registro y modificarlo a través redes locales o en entornos
con múltiples sistemas. Algunas de las apps que se suelen utilizar son el gpedit (Group Policy
Editor) y el MMC (Microsoft Management Console).
● Su interfaz.
Su estructura consta de dos paneles principales: el árbol y los detalles.
En la parte del árbol encontramos una estructura con todas las claves del registro. Estas claves
se organizan de forma jerárquica en ramas y subramas, similar a las carpetas en el explorer de
Windows.
Imagen sobre el árbol de claves.
Luego tenemos la ventana de detalles, la cual se encuentra en el lado derecho del editor de
registro y su función es mostrar información detallada sobre la clave que seleccionamos,
estas pueden incluir cadenas, números, datos binarios, etc.
Ventana de detalles
● Tipos de datos.
➔ Tipos de datos utilizados: Estos se pueden crear directamente desde la app de
regedit.exe.
◆ REG_SZ: Se utiliza para crear valores de cadena de texto (String), estas mismas
terminan con un carácter de valor nulo para identificar en donde se termina la
cadena de texto.
◆ REG_EXPAND_SZ: Casi lo mismo que REG_SZ, la diferencia es que este
permite expandir referencias a variables de entorno. Es decir, si utilizas un
REG_SZ con una variable de entorno entonces el valor que te va a devolver al
leerla es exactamente el mismo texto, en cambio con un REG_EXPAND_SZ te va a
mostrar el contenido de la variable.
Esto se puede comprobar creando dos valores con estos dos tipos de datos
diferentes, en el REG_SZ escribes como dato %PATH% y en REG_EXPAND_SZ lo
mismo. Luego utilizas powershell para leer los valores y te darás cuenta que el
REG_SZ te devuelve exactamente el texto %PATH% mientras que el otro te
devuelve todo el contenido de la variable.
Comando a utilizar:
Get-ItemPropertyValue -Path 'Key:Subkey' -Name 'Test1'
Ejemplo de comando:
Get-ItemPropertyValue -Path 'HKCU:\Keyboard Layout\Substitutes'
-Name 'Test1'
◆ REG_BINARY: Simplemente utiliza valores binarios, no hay mucho que explicar
aquí. Un ejemplo de esto sería el valor “StandardStart” que se utiliza para marcar
el inicio y el fin del horario de verano; este valor se almacena en binario pero se
puede convertir a una fecha exacta siempre y cuando la zona horaria lo permita.
◆ REG_DWORD: Este tipo de datos es bastante común, permite crear valores
enteros de 32 bits.
◆ REG_QWORD: Cumple la misma función que un DWORD, la diferencia es que este
permite crear valores enteros de 64 bits. Cabe destacar que aunque cambies un
valor DWORD a QWORD este valor se seguirá leyendo de la misma forma, es
decir que ignora completamente el cambio.
◆ REG_MULTI_SZ: Básicamente es una lista de cadenas de texto, cada elemento se
separa con un carácter nulo y el final de la lista se separa con dos caracteres
nulos. Algún ejemplo de este tipo de datos sería el valor “DependOnService” que
tienen algunos servicios en Windows para marcar dependencias de los
mismos.
➔ Tipos de datos extras: Estos tipos de datos no pueden ser creados por medio del uso del
registro ya que no están soportados como tal, la forma de crearlos es utilizando cmdlets
en powershell especificando el tipo “Unknown” o directamente utilizando la API de
Microsoft.
◆ DWORD/QWORD_LITTLE_ENDIAN y BIG_ENDIAN: En la documentación de
Microsoft se muestran estos tres tipos de valores
“REG_DWORD_LITTLE_ENDIAN”, “REG_QWORD_LITTLE_ENDIAN” y
“REG_DWORD_BIG_ENDIAN”, los dos primeros hacen referencia a los valores
normales de DWORD y QWORD ya que estos trabajan en LITTLE ENDIAN. Ahora
bien, ¿Qué es Endian o Endianness? Básicamente es una propiedad que
determina el orden en el cual los datos (bytes) son ingresados en memoria;
existen dos tipos comunes “Little-Endian” y “Big-Endian”, de ahí es donde salen
los nombres para estos dos tipos de datos.
El Endianness viene dado por la arquitectura del sistema, en sistemas x86/x64 se
utiliza Little_Endian ya que es el estándar establecido por lo tanto Windows lo
utiliza. Básicamente el Endianness es una característica de Hardware pero el SO
se adapta a esta misma. Aun así, Windows soporta el tipo de dato
DWORD_BIG_ENDIAN para ofrecer compatibilidad con escenarios y sistemas
específicos que lo requieran.
◆ REG_LINK: Se utiliza como un enlace simbólico. Un enlace simbólico es una
forma en la cual el sistema hace referencia al dato que se está especificando; es
decir, si creas un enlace simbólico ese mismo enlace se comporta como si fuera
el archivo o dato real.
◆ REG_NONE: Básicamente un valor con un tipo de dato no definido.
◆ REG_RESOURCE_LIST: Es utilizado para almacenar una lista de recursos de
Hardware, es decir; en el caso de que contengan un dispositivo este mismo valor
contendrá como dato información sobre qué IRQ (Interrupt Request) se
asigna a ese dispositivo, qué puerto de E/S (Entrada/Salida) está utilizando y
qué direcciones de memoria están reservadas para su funcionamiento. La
mayoría de valores con este tipo de datos se encuentran en
HKLM\SYSTEM\CurrentControlSet\Enum, aqui se listan por tipo de dispositivo y
luego por su HWID (Hardware IDs); dentro de la subkey con el HWID se encuentra
un identificador con el formato PnP (Plug and Play) del dispositivo.
● Tipos de usuarios.
En esta sección hablaremos sobre los tipos de usuarios, no se relaciona directamente
con el registro pero lo explicaré de forma rápida y concisa para que se entienda medianamente
el tema de los permisos en los próximos temas a tratar. En Windows existen varias identidades
las cuales tienen diversos privilegios, y a su vez también hay dos tipos de usuarios; aquí
hablaremos solamente de los tipos de usuarios.
● Usuarios interactivos: Estos usuarios se refieren a todas las cuentas locales utilizadas
por personas que interactúan directamente con la interfaz del SO, básicamente pueden
usar el SO con normalidad sin ningún problema. Es el tipo de cuenta que todo mundo en
Windows utiliza.
● Usuarios del sistema: Bueno, aquí son cuentas especiales (ocultas) que son utilizadas
para ejecutar servicios y/o procesos del SO; no necesitan una interacción con un usuario
interactivo y además estas cuentas tienen muchos más privilegios sobre el sistema que
cualquier cuenta interactiva (incluida la de Administrador). Tenemos tres usuarios del
sistema: LocalSystem, NetworkService, LocalService. La cuenta de LocalSystem es la que
más permisos tiene y puede ser utilizada para modificar cosas importantes del SO, para
poder utilizarla como usuario interactivo podemos hacer uso de PsExec.
● Claves lógicas, físicas y dinámicas.
En el registro de Windows tenemos diversas claves las cuales cumplen funciones
específicas, son un total de 5 claves que pueden ser vistas por cualquier usuario; HKCR
(Current Root), HKCU (Current User), HKLM (Local Machine), HKU (Users) y HKCC (Current
Config).
Ahora bien, se le llama clave lógica a aquellas claves que son creadas en memoria simplemente
y no son almacenadas como archivo físico; básicamente las únicas claves físicas como tal son
HKLM, HKU y HKCU como clave dinámica.
¿Que es una clave dinámica? básicamente es una clave física pero que va cambiando su
información, en el caso de HKCU esta obtiene las claves de HKLM y HKU pero dependiendo el
usuario que inicia sesión en el equipo es la información que va a adoptar HKCU; por eso mismo
se le dice clave dinámica, además toda su información se almacena en un archivo físico
llamado Ntuser.dat.
El resto de claves tal como HKCR, HKCU y HKCC son combinaciones o toman valores de esas
claves por lo tanto son llamadas claves lógicas; no tienen un archivo único con el cual
identificarlas.
● Claves en el registro.
○ Hive Key Classes Root
HKCR o HKEY_CLASSES_ROOT es una clave del registro la cual contiene información
sobre los objetos COM y las extensiones de archivos.
Esta clave tiene como función contener esa información para ser utilizada por diversos
programas, es una combinación de las claves HKLM\Software\Classes y
HKCU\Software\Classes. Estas dos últimas keys se mantienen en Windows para la
retrocompatibilidad con versiones antiguas de objetos COM y son usadas para una mayor
“personalización” de las configuraciones del sistema.
Ahora bien, expliquemos que es un objeto COM (Component Object Model) de forma básica.
Este objeto se utiliza como medio de obtención de información para otros programas sin tener
en cuenta el lenguaje de programación de los mismos, se compone de tres IDs las cuales son
utilizadas como referencias al objeto en sí:
● ProgID (Programmatic Identifier): Esta misma tiene un formato único pero se puede
repetir, se usa como identificador pero no es globalmente único. Ejemplo:
WindowsInstaller.Installer
● CLSID (Class Identifier): Esto es un identificador único del objeto COM. Ejemplo:
{000C1090-0000-0000-C000-000000000046}
● IID (Interface Identifier): Esto se utiliza para identificar la interfaz de un objeto COM. No
se pueden obtener por medio del registro de Windows, pueden existir varias interfaces
para un mismo objeto COM.
Esta información se suele encontrar dentro de la API, aunque se puede obtener por
medio de OLE/COM Object Viewer u OleViewDotNet.
Obtención de IIDs por medio de OleView .NET
○ Hive Key Current User
HKCU o HKEY_CURRENT_USER es una key del registro la cual Windows utiliza para
almacenar toda la información del usuario actual, es decir esta misma se podría considerar una
clave temporal o dinámica; ya que depende el usuario interactivo que estemos utilizando va a
tener una configuración u otra.
Esta clave del registro hereda información de HKLM (HKEY_LOCAL_MACHINE) y HKU
(HKEY_USERS), especificamente hereda la key “SOFTWARE” de HKLM y el resto de claves de
HKU.
Ahora explicaremos las subkeys dentro de HKCU, son las siguientes:
● AppEvents: Almacena todos los eventos de sonido en Windows, es la información que
aparece en las propiedades de sonido de Windows; el esquema, los eventos y los
sonidos.
En la imagen podemos observar que los recuadros con la información obtenida. Los
NOMBRES se obtienen de HKCU\AppEvents\Schemes\Names, los EVENTOS de
HKCU\AppEvents\EventLabels y los SONIDOS se obtienen de
HKCU\AppEvents\Schemes\Apps.
● Console: Aquí se guardan todas las configuraciones de PowerShell.
● Control Panel: Se utiliza para almacenar las configuraciones del panel de control
(legacy).
● Environment: Acá se almacenan algunos valores que indican las variables de entorno.
● Keyboard Layout: Almacena configuraciones del Layout.
● Printers: Contiene configuraciones sobre las impresoras.
● SOFTWARE: Se hereda de HKLM y contiene configuraciones de aplicaciones instaladas
por el usuario.
● System: Contiene algunas configuraciones del sistema específicas en ese usuario.
● Volatile Environment: Contiene variables de entorno temporales.
○ Hive Key Local Machine
HKLM o HKEY_LOCAL_MACHINE es una clave del registro la cual almacena toda la
configuración de Windows y de las apps instaladas. En esta clave existen muchas subclaves
interesantes e importantes; todo lo que modificamos acá se replica a todos los usuarios del
sistema por lo tanto hay que tener cuidado con lo que se modifica aquí.
Hablemos de algunas subkeys relevantes de HKLM:
● BCD00000000: Esta subkey se encarga de almacenar toda la configuración de booteo
del SO, se guarda la información del BCD (Boot Configuration Data).
● HARDWARE
○ DESCRIPTION: En esta subkey podes encontrar información relacionada a la
BIOS y CPU, además de que almacena configuración de diversos dispositivos.
● SAM/SECURITY: A pesar de ser dos claves diferentes las trato como iguales ya que
ambas se relacionan con la seguridad. Estas dos claves es donde se almacena la
política de seguridad local y la información de las cuentas locales respectivamente. En
SAM (Security Account Manager) está el contenido cifrado además de que al igual que
en SECURITY no se puede acceder con un usuario interactivo (incluida la cuenta
“Administrator”); la única forma de acceder al contenido de estas keys es a través del
usuario SYSTEM, esto es un usuario del sistema oculto; no es interactivo pero se pueden
ejecutar procesos con el nivel de permisos de esa cuenta.
Para poder acceder al registro con los permisos de SYSTEM podemos usar PsExec, esta
es una herramienta de SysInternals la cual permite realizar varias acciones; entre ellas
poder utilizar la cuenta de SYSTEM como usuario interactivo. Para hacer esto basta con
ejecutar este comando: psexec -s -i -d RegEdit
● SOFTWARE
○ DefaultUserEnvironment: Aquí se almacenan las variables de entorno default
para cada usuario interactivo creado.
○ Microsoft: En esta clave justamente se guarda toda la información y/o
configuraciones relacionadas con productos de Microsoft. Se suele utilizar para
almacenar claves de activación y diversas configuraciones de apps de Microsoft
como Office, Visual Studio, entre otras.
Además también se utiliza para almacenar configuraciones importantes como el
path de la ejecución de los DLLs en SystemSettings, información sobre SysPrep,
etc. Sobre todo, almacena información importante en las subkeys llamadas
“Windows” y “Windows NT”; muchas modificaciones interesantes se realizan en
estas subkeys.
○ Policies: Aquí se pueden modificar políticas que afectan a todos los usuarios del
dispositivo.
● SYSTEM
○ ControlSet001: Esta subkey se utiliza como backup para la subkey dinámica
“CurrentControlSet”, es decir; en esta se almacena exactamente la configuración
de “CurrentControlSet” si existió un inicio exitoso del SO.
○ CurrentControlSet: Acá se almacena información CRÍTICA del sistema, en
general el hecho de modificar el registro puede dar lugar a diversos errores
inesperados; la diferencia es que en esta subkey hay muchas cosas importantes
que se pueden modificar y podrían perjudicar el desempeño del equipo de forma
negativa o positiva. Se almacena la configuración de los servicios y drivers, sus
configuraciones, configuraciones del inicio del sistema y configuraciones en el
kernel de Windows (NT).
Como se dijo anteriormente, esta key se puede tomar como “dinámica” ya que no
es más que un enlace simbólico hacia la key “ControlSet001”. Esto quiere decir
que cualquier modificación que exista en esta misma key se va a ver reflejada
en “ControlSet001” y viceversa.
■ Control: Esta key es increíblemente importante dentro de
CurrentControlSet ya que contiene información muy relevante. Aquí
podemos encontrar algunas configuraciones como las del kernel, del
control de memoria de Windows, del HAL (Hardware Abstraction Layer).
También aquí podemos observar todas las variables de entorno del
sistema, en la key “HKLM\SYSTEM\CurrentControlSet\Control\Session
Manager\Environment”.
Existen muchas cosas relevantes e interesantes aquí, algunos DWORDs
extraños que para modificarlos se necesita un conocimiento profundo del
SO y su funcionamiento.
■ Enum: Acá es donde se almacena toda la información de los dispositivos
conectados/detectados por el Sistema, estos se ordenan por el tipo de
dispositivo en subclaves; por ejemplo tenemos las subclaves: ACPI, PCI,
HID, DISPLAY, etc.
Además, también se encuentran configuraciones y datos relevantes como
el HWID (HardWare ID), los drivers utilizados, la GUID (Globally Unique
Identifier) del dispositivo. Toda esta clave es utilizada en parte por el
Device Manager.
■ Services: Por último tenemos esta clave en la cual se encuentran TODOS
los drivers y servicios registrados por el Sistema; pueden estar en uso o
no. Aca hay diversas configuraciones de servicios que no vamos a tratar
ya que no corresponde pero aca esta todo lo relacionado a eso y se
puede modificar con serviwin o alguna otra app de preferencia.
○ Hive Key Users
En esta key se almacena todo lo relacionado a los perfiles de usuarios, cada subkey tiene
asignado una SID (Security ID). Dentro de HKU se almacena también tres perfiles de usuarios
que son importantes para el sistema y están representados por una SID diferente, estos son
el perfil de SYSTEM (S-1-5-18), LocalService (S-1-5-19) y NetworkService (S-1-5-20). Estos
perfiles o usuarios se utilizan generalmente para la ejecución de servicios del sistema.
Como podemos observar en la imagen superior tenemos dos subkeys que se relacionan con mi
usuario, una tiene el sufijo “_Classes” y el otro no. Este sufijo indica que en esa subkey se
almacenan clases y extensiones que están registradas solamente para ese usuario, esta
información también se encuentra dentro de la SID sin el sufijo “_Classes” la diferencia es que
uno hace referencia a un archivo real y otro es una representación visual. El archivo al que se
hace referencia se encuentra en esta ruta:
“C:\Users\[Usuario]\AppData\Local\Microsoft\Windows\UsrClasses.dat”
Como bien sabemos, existen tres lugares donde se almacenan objetos COM y extensiones:
HKCR (HKEY_CURRENT_ROOT), HKLM (HKEY_LOCAL_MACHINE), HKCU
(HKEY_CURRENT_USER).
La primera key (HKCR) es una clave lógica que se crea a partir de la combinación de dos claves:
HKLM\Software\Classes y HKCU\Software\Classes. A su vez, HKCU es una key que se relaciona
con el SID del usuario actual dentro de HKU. Basicamente, la informacion de HKCR proviene de
HKLM pero se puede “sobrescribir” con la información de HKCU, en el caso de que exista un
conflicto (keys con el mismo nombre) entonces se utiliza la información de clases de HKCU en
vez de HKLM.
Quizá es un poco confuso, pero son cuestiones de prioridades; la información de HKCR viene
de HKLM y HKCU, ahora bien, si existe un conflicto de claves entre HKCU y HKLM entonces se
utiliza la información de HKCU. Les dejo un pequeño diagrama de ejemplo.
Diagrama de flujo para visualizar el funcionamiento de las claves.
○ Hive Key Current Config
Por último tenemos esta clave que está acá por conveniencia, es una especie de
“acceso directo” hacia “HKLM\SYSTEM\CurrentControlSet\Hardware Profiles\Current”
○ Hive Key Performance * y HKCU_Local_Settings.
Bueno, estas son las claves ocultas del registro; no se pueden obtener acceso a estas por
medio de Regedit incluso ejecutandolo con los permisos de SYSTEM; estas claves se muestran
al utilizar la API de Windows con la función RegOpenKeyEx. Como resultado tenemos tres
claves ocultas en regedit: HKPD (PERFORMANCE_DATA), HKPT (PERFORMANCE_TEXT), HKPN
(PERFORMANCE_NLSTEXT). Según tengo entendido estas claves eran utilizadas antes de
Windows 2000 para poder acceder a los contadores de rendimiento, posteriormente se creó una
API dedicada para poder acceder a estos así que ya no tienen un uso como tal.
● El registro REAL y los Hives.
Como observamos con anterioridad las “claves” tienen la palabra Hive adelante para
referirnos a ellas; por ejemplo, “Hive Key Local Machine”. Ahora bien, hablemos sobre lo que es
un hive.
Un hive, es un grupo lógico el cual almacena claves, subclaves y distintos valores. En el caso de
HKLM este hive almacena las claves BCD, HARDWARE, SAM, SECURITY, SOFTWARE y SYSTEM;
dentro de estas claves existen subclaves y en la ventana de detalles se muestran los valores
con los diversos datos.
Les dejo una imagen con la información relacionada al registro para que se entienda mejor; en
la imagen tienen remarcada la estructura que sigue el registro, se señala el hive HKLM y las
claves que están en azul, luego, dentro de la clave HARDWARE se encuentran las subclaves
remarcadas en amarillo y en la ventana de detalles se muestra la composicion de la
informacion; tenemos los valores, el tipo de datos y finalmente los datos.
Composición del registro
Ahora sabemos lo que son los hives, pero ¿a qué me refiero con un grupo lógico? Bien, tratemos
esto; anteriormente hablamos sobre los diferentes tipos de “claves” (correctamente llamados
hives), tenemos los lógicos, físicos y dinámicos. Bueno, todo esto tiene sentido dentro de la
existencia del editor del registro ya que esta app lo que hace es una representación visual de los
hives. Es decir, todos los hives que están listados en el regedit son lógicos (no existen como
tal) ya que realmente Windows no interactúa con ellos de esta forma. Y acá es donde entra
la parte del registro de Windows real.
Si utilizamos WinObj podemos observar que hay un objeto llamado REGISTRY; y este mismo
objeto es lo que llamamos el registro real. Podemos verificar la existencia de este objeto en
WinDbg utilizando el Debugger del Kernel en forma local lo cual nos da como resultado lo
siguiente.
Todos los cambios al registro en Windows se realizan en este objeto llamado REGISTRY, dentro
de este objeto tenemos un total de cuatro claves: A, MACHINE, USER, WC. Como podemos
suponer MACHINE Y USER son las claves reales de las cuales se basan todos los hives en
regedit.
Luego tenemos dos claves extras; A y WC.
En la clave A no vamos a poder visualizar ningún tipo de valor ya que no tenemos los permisos
necesarios, no los podemos obtener de ninguna forma. Esta clave es utilizada mayormente por
apps UWP (Universal Windows Platform); con Process Explorer podemos visualizar los rastros
que dejan algunas apps.
Imagen de los rastros en \REGISTRY\A
Ahora bien, la otra clave llamada WC se utiliza para los contenedores de Windows (Windows
Containers); dentro de esta clave se almacenan otras subclaves las cuales tienen como nombre
“Silo” y un conjunto de IDs.
Antes de hablar de los Silos tenemos que familiarizarnos con el concepto de Containers, estos
son pequeñas instancias aisladas que se ejecutan en modo usuario, son mini máquinas
virtuales; la diferencia entre una máquina virtual y un Container es que una máquina virtual se
ejecuta con su propio Kernel. Como ejemplo les dejo este diagrama por parte de Microsoft.
En el diagrama inferior podemos ver ejemplos de ejecución de un contenedor; este mismo
aloja sus propias apps y servicios pero comparten el mismo Kernel con el Host.
Diagrama del funcionamiento de un contenedor (OS-level).
Por otro lado, tenemos el funcionamiento de las máquinas virtuales, que como podemos
observar en el diagrama no comparte el Kernel con el Host; simplemente tiene su propio Kernel.
Resumidamente, los contenedores son “máquinas virtuales” ligeras y se pueden llegar a utilizar
para diversas funciones. Existen algunos tipos de contenedores; tenemos contenedores
OS-level y los que están basados en hipervisores; los contenedores OS-level son justamente los
que alojan las apps y los servicios pero comparten el mismo Kernel.
Por otro lado tenemos los contenedores basados en hipervisores, existen dos tipos de
hipervisores:
➔ Tipo 1 (Bare-Metal): Estos no requieren un SO adicional y tienen acceso directo
al Hardware sin pasar por un SO Host. Un ejemplo básico de este tipo sería que
básicamente te instalas un “gestor” de máquinas virtuales que interactúan
con el Hardware directamente. Algunos hipervisores Bare-Metal serían:
VMware ESXi, KVM, o Citrix.
Dejo algunas imágenes para que tengan de referencia sobre la arquitectura de
estos hipervisores.
Hipervisor KVM (Kernel-based Virtual Machine)
Hipervisor Citrix
➔ Tipo 2 (Hosted/Client): Este tipo de hipervisor es el más común ya que es el
que utiliza un usuario final para testear diversas cosas; se utilizan
mayormente cuando la latencia no importa o no es necesario tanto rendimiento.
Ejemplos de estos son básicamente las apps que conocemos todos de
máquinas virtuales; VMWare, VirtualBox, etc.
Una vez hablado sobre los Containers y algunas cosas de virtualización podemos volver al tema
de los Silos. Por defecto hay algunos Silos creados en Windows los cuales tienen almacenadas
algunas keys del registro; el principal objetivo de estos Silos es ofrecer estabilidad y seguridad
a Windows.
Los Silos se diferencian de los Containers (de cierta forma) ya que tienen objetivos diferentes,
los Silos al igual que los Containers son entornos aislados pero estos se utilizan para cosas
específicas del sistema o algunas apps. En cambio los Containers ofrecen más flexibilidad y
portabilidad que los Silos.
● Conclusión
Este es el final del informe completamente, espero que con esto haya quedado claro algunas
situaciones o entiendan un poco mejor el funcionamiento de Windows y su registro. Se habló
de la importancia de cada una de las claves y los tipos que hay, además de como Windows nos
“miente” por así decirlo a la hora de interactuar con esta BD.
Si leyeron todo muchas gracias, se agradecen comentarios positivos y/o críticas constructivas
de esto mismo en el tweet en cuestión. Recuerden que el “informe” puede estar sujeto a
cambios a futuro.
● Referencias.
Interface Key - Win32 apps | Microsoft Learn
Component Object Model (COM) - Win32 apps | Microsoft Learn
Merged View of HKEY_CLASSES_ROOT - Win32 apps | Microsoft Learn
CLSID Key - Win32 apps | Microsoft Learn
ProgID Key - Win32 apps | Microsoft Learn
HKEY_CLASSES_ROOT Key - Win32 apps | Microsoft Learn
Structure of the Registry - Win32 apps | Microsoft Learn
Windows registry for advanced users - Windows Server | Microsoft Learn
HKEY\_LOCAL\_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion - Win32
apps | Microsoft Learn
Registry Hives - Win32 apps | Microsoft Learn
What Is HKEY_LOCAL_MACHINE? (lifewire.com)
Where are the Windows Registry files located in Windows 11/10? (thewindowsclub.com)
HKEY_CURRENT_USER: Core Services | Microsoft Learn
Mysteries of the Registry – Pavel Yosifovich (scorpiosoftware.net)
Inside Windows Registry | Algeo Calculator (androidcalculator.com)
Managing Windows Server 2012 Systems : Managing the Registry (part 2) - Registry root keys -
Windows Server - tutorial.programming4.us
Using Default Group Accounts | Microsoft Learn
Interactive User - Win32 apps | Microsoft Learn
What is Windows "interactive user"? - Server Fault
Inside the Windows NT Registry (itprotoday.com)
About Windows containers | Microsoft Learn
What I Learned from Reverse Engineering Windows Containers
Exploring Windows Containers
Windows Container / Server Silo - Windows 10 - MSFN