Los apuntes anteriores sobre el registro están aquí

El registro

Descripción del registro

Consultar el apartado "Descripción del registro" en http://support.microsoft.com/kb/256986/es-es.

Registro virtualizado

El registro de Windows Vista y posteriores, está virtualizado. Se trata de un sistema de seguridad para garantizar que un usuario sin privilegios suficientes produzca cambios en el registro que pueda deteriorarlo.

El mecanismo detrás de esto, se llama UAC (User Access Control), que veremos en temas posteriores.

Cada aplicación tiene asoicado un token de seguridad, al igual que los usuarios, que pueden ser de usuario estándar o de administrador (para ejecución elevada). Cuando una aplicación se ejecuta con un token de usuario estándar, el sistema no accede al registro, sino a una copia privada del registro. La próxima vez que la aplicación acceda al registro, el sistema le mostrará la copia privada. A esto le llamamos virtualización del registro.

La intención detrás de esto, es imitar a los sistemas UNIX, como linux, en sus características nativas de seguridad relacionadas con las cuentas de usuario. De este modo, se garantiza que el registro se mantendrá a salvo de usuarios inexpertos.

¿Qué hacer cuando el perfil se corrompe, y en el peor de los casos, no podemos acceder a la cuenta? Los archivos que almacenan el perfil de cada usuario, se ubican en la ruta C:\Users\nombre_usuario, en forma de archivos con el prefijo ntuser. El siguiente enlace explica qué hacer cuando dicho perfil se ha corrompido: http://windows.microsoft.com/es-es/windows/fix-corrupted-user-profile#1TC=windows-7

Actividad 1. Crea un usuario llamado "UsuarioPerfil1" y comprueba que puedes acceder al entorno de escritorio. Después, desde un LiveCD, compromete el perfil del usuario, borrando su archivo NTUSER.DAT. Reinicia Windows y comprueba que no puedes acceder al entorno de escritorio. A continuación crea un usuario llamado "UsuarioPerfil2", y pon en práctica el procedimiento explicado en http://windows.microsoft.com/es-es/windows/fix-corrupted-user-profile#1TC=windows-7 para poder volver a acceder al entorno de escritorio con los datos del usuario "UsuarioPerfil1".

Debes entregar dos capturas. La primera, se llamará Act1.1-reg.png, donde se podrá ver que no puedes acceder al entorno de escritorio de UsuarioPerfil1. La segunda captura, llamada Act1.2-reg.png, mostrará el momento en que estás pegando los archivos, según se indica en el paso 10.

Registro transaccional

El registro de Windows Vista, y por tanto de Windows Server 2008 y posteriores, tiene similitudes con una base de datos transaccional. Esto quiere decir que las modificaciones del registro se producen en forma de operaciones atómicas (transacciones), que siempre pueden desacerse (rollback), dotando al registro de integridad.

Asociado al registro se encuentran unos ficheros "log", que almacena los cambios que se van produciendo. De este modo el sistema puede seguir hacia atrás los cambios para desacerlos.

El sistema no muestra los cambios hasta que no se ha completado una transacción (commit transaction).

Realizar una copia de seguridad del registro

Leer el apartado "Hacer una copia de seguridad del registro" en la página http://support.microsoft.com/kb/256986/es-es.

No es habitual hacer exportaciones completas del registro ya que esto puede dar problemas. Siempre es mejor usar herramientas de backup.

La copia de estado del sistema, es una copia que incluye registros y ficheros esenciales para la recuperación del sistema. De cualquier modo una copia de seguridad completa del sistema siempre incluye siempre el estado del sistema.

Puede ser muy útil si el registro se deteriora o pierde parte de su información y está especialmente indicado en controladores de dominio cuya base de datos LDAP se ha corrompido.

Para hacer una copia de estado del sistema hay que añadir antes la característica de copia de seguridad. Para crear la copia hay que ejecutar el siguiente comando:

wbadmin start systemstatebackup -backuptarget:d:

Para consultar las copias realizadas:

wbadmin get versions

Este comando nos mostrará las diferentes copia de estado del sistema realizadas. Cada copia del sistema muestra datos de fecha, destino de la copia, identificador y cobertura de la copia. Para restaurar una copia, debemos fijarnos en la entrada mostrado en "Identificador de versión".

Para restaurar copia del estado del sistema, usaremos el siguiente comando:

wbadmin start systemstaterecovery -version:11/2/2011-09:00

suponiendo que 03/31/2010-09:00 es el identificador de versión.

Actividad 2. Añade un segundo disco a tu máquina virtual con Windows instalado. Después añade la característica de "Copias de seguridad" a Windows y Realiza una copia de seguridad del registro, empleando el procedimiento especificado anteriormente. Asegúrate de que la copia se realiza sobre el nuevo disco. Después, muestra por pantalla las copias de seguridad realizadas hasta el momento.

Toma una captura en el momento en que muestres las copias de seguridad realizadas hasta el momento, y guárdala con el nombre Act2-reg.png

Actividad 3. Restaura la copia del registro realizada anteriormente.

Toma una captura una vez hayas iniciado el proceso, y guárdala con el nombre Act3-reg.png

Para obtener más información sobre el comando wbadmin, consultar la página http://technet.microsoft.com/de-de/library/cc754015(v=ws.10).aspx

Modificación del registro de Windows

¿Por qué habría de tocar el registro?

En ocasiones, es preciso por tareas de mantenimiento hacer cambios controlados sobre el registro. En otras ocasiones, como en https://kc.mcafee.com/corporate/index?page=content&id=kb65863, un fabricante nos propone un procedimiento para reparar algún problema, tocando el registro.

Métodos para modificar el registro de Windows

Existen diferentes maneras de modificar el registro:

  • A través de la interfaz de Windows, por ejemplo, a través el panel de control, o a través del editor de la directiva de grupo. Este es el modo más recomendable de modificar el registro.
  • Através del editor del registro.
  • Empleando archivos .reg.
  • Empleando comandos de edición del registro.

Modificar el registro a través de la interfaz de Windows

Cada vez que se realiza una modificación de la configuración de Windows, se está modificando el registro. Por ejemplo, hagamos la siguiente prueba:

Práctica. Abre el editor del registro mediante el comando regedit.exe. Una vez allí, dirígete a la clave HKEY_CURRENT_USER\Control Panel\Desktop. Una vez allí, haz clic sobre la subclave Wallpaper y comprueba su contenido (a priori debe estar vacío). Después, dirígete al panel de control y asigna una imagen como fondo de escritorio. Después vuelve a comprobar el valor.

Modificar el registro a través del editor del registro de Windows

Microsoft avierte lo siguiente:

Pueden producirse problemas graves si modifica incorrectamente el Registro mediante el Editor del Registro o con cualquier otro método. Estos problemas pueden requerir que reinstale el sistema operativo. Microsoft no puede garantizar la solución de esos problemas. Modifique el Registro bajo su responsabilidad.

Con el editor del registro se puede hacer lo siguiente:

  • Buscar un subárbol, clave, subclave o valor
  • Agregar una subclave o un valor
  • Cambiar un valor
  • Eliminar una subclave o un valor
  • Cambiar el nombre de una subclave o un valor
  • Exportar e importar una clave del registro

El área de navegación del Editor del Registro muestra carpetas. Cada carpeta representa una clave predeterminada del equipo local.Cuando se obtiene acceso al Registro de un equipo remoto, sólo aparecen dos claves predefinidas: HKEY_USERS y HKEY_LOCAL_MACHINE.

Ejemplos de actuaciones sobre el registro

Crear una nueva entrada en el menú contextual

La rama HKEY_CLASSES_ROOT\ contiene todas las claves que regulan el comportamiento del menú contextual, al abrir el registro y expandir la rama indicada verás que contiene una multitud impresionante de claves pero las necesarias son solo unas pocas, son las siguientes:

  • HKEY_CLASSES_ROOT\*\shell: Las claves creadas aquí se mostrarán en el menú contextual al dar un clic derecho en cualquier tipo de archivo, por lo que se debe de utilizar en funciones que involucren solo a archivos, no carpetas ni directorios.
  • HKEY_CLASSES_ROOT\Directory\shell: Las claves creadas aquí se mostrarán en el menú al dar un clic derecho en cualquier directorio o carpeta
  • HKEY_CLASSES_ROOT\DesktopBackground\Shell: Las claves creadas aquí se mostrarán en el menú al dar un clic derecho solo en el escritorio, por ejemplo, aquí se encuentra la opción de Resolución de pantalla, Gadgets, etc.
  • HKEY_CLASSES_ROOT\Directory\Background\shell : Las claves creadas aquí se mostrarán en el menú al dar un clic derecho en el fondo de cualquier directorio y en el escritorio.
  • HKEY_CLASSES_ROOT\Drive\shell: Las claves creadas aquí se mostraran en el menú al dar un clic derecho en las unidades de disco.

Para poder añadir una nueva entrada al menú contextual de alguno de los elementos anteriormente comentados:

  1. Abrir Regedit, navegar a la clave en la cual consideres que se debe crear la función, y crear una nueva subclave con un nombre descriptivo de la función que debe realizar. Por ejemplo
  2. Dale el nombre a la clave creada de la función, este nombre será el que se mostrará en el menú.
  3. Hacer clic derecho en la clave creada y crear una subclave llamada command
  4. Entra en la subclave command creada anteriormente y edita el valor Predeterminado y escribe o pega el comando que iniciará la función o tarea que se desea realizar.

Si en el valor empleas la cadena %1, estás haciendo referencia al elemento (ya sea archivo o directorio) sobre el que estás haciendo clic.

Actividad 4. Añade una nueva entrada de menú contextual de archivo, que te permita abrir cualquier archivo con el editor hexadecimal XVI32. Para ello sigue los siguientes pasos:

  1. Descarga el archivo XVI32.zip y descomprímelo en C:\, de manera que el binario esté en la ruta C:\xvi32\XVI32.exe
  2. Accede al registro, y sigue las instrucciones anteriormente comentadas para añadir una entrada al menú contextual de cualquier archivo.
  3. Asigna al valor Predeterminado de la clave command la cadena C:\xvi32\XVI32.exe "%1"
  4. Comprueba que aparece la nueva entrada en el menú contextual y asegúrate de funciona correctamente.

Realiza una captura en la que se pueda ver la entrada en el menú contextual de cualquier archivo, y el resultado de hacer clic sobre ella. Guarda la captura con el nombre Act4-reg.png

Deshabilitar el botón Apagar el equipo

La clave donde se registra el comportamiento del entorno gráfico de Windows es HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer. El valor que nos interesa en este caso es NoClose, y es de tipo DWORD. Este valor puede valer '0' o '1', donde '0' singnifica que la característica está desactivada y '1' que está activada.

Actividad 5. Modifica el registro para que no se pueda apagar el equipo desde el botón de inicio.

Toma una captura donde se pueda comprobar que no esta presente la opción "Apagar el equipo", y guárdala con el nombre Act5-reg.png

Hacer que un programa se ejecute al inicio.

La clave que contiene los programas que se ejecutan al inicio es HKLM/SOFTWARE/Microsoft/Windows/CurrentVersion/Run. Para que un programa se ejecute, debería haber un valor de tipo alfanumérico (REG_SZ) que contenga la ruta al programa a ejecutar.

Actividad 6. Añade un archivo por lotes que se ejecute al inicio de Windows, siguiendo los siguientes pasos:

  1. Crea un archivo llamado C:\test.bat con el siguiente contenido y guárdalo en una carpeta del sistema:
  2. ECHO OFF ECHO "Registro modificado" PAUSE
  3. Ejecuta el programa regedit.exe y accede a la clave HKLM/SOFTWARE/Microsoft/Windows/CurrentVersion/Run
  4. Crea un valor de tipo alfanumérico (REG_SZ) llamado mensaje
  5. Modifica el valor de la clave mensaje para que contenga la ruta completa al archivo por lotes que creaste anteriormente
  6. Reinicia el sistema y comprueba que el archivo por lotes se ejecuta

Toma una captura una vez que reinicies y se pueda ver que se ejecuta el archivo por lotes. Guárdala con el nombre Act6-reg.png

Existen infinidad de cosas que se pueden hacer con el registro, siempre que se conozca la clave y el valor que se debe tocar. Siempre es preferible utilizar la base de conocimiento de Microsoft, especialmente si se trata de un servidor en producción. En cualquier caso, si no estamos seguros de algo, podemos utilizar una máquina virtual de prueba para comprobar los efectos del cambio.

Modificar el registro sin arrancar Windows (Offline)

En ocasiones puede ser necesario editar el registro cuando el sistema está fuera de servicio. Para conseguir esto, debemos lanzar en primer lugar la consola de recuperación (desde el CD de instalación de Windows). Una vez iniciada la consola, seguimos los siguientes pasos:

  • ejecutamos el comando regedit.
  • Hacemos clic sobre la clave raíz HKEY_LOCAL_MACHINE.
  • Hacer clic en la entrada del menú Archivo\Cargar subárbol, y seleccionar el archivo que almacena la clave del registro que buscamos:
    • HKEY_LOCAL_MACHINE\SAM = %windir%\system32\config\SAM
    • HKEY_LOCAL_MACHINE\SYSTEM = %windir%\system32\config\SYSTEM
    • HKEY_LOCAL_MACHINE\SOFTWARE = %windir%\system32\config\SOFTWARE
    • HKEY_USERS\.Default = %windir%\system32\config\DEFAULT
    • HKEY_CURRENT_USER = %userprofile%\ntuser.dat
  • Asignar un nombre arbitario (por ejemplo "MiClave") cuando se pregunte. Un nuevo nodo será creado bajo la clave raíz HKEY_LOCAL_MACHINE
  • Ya podremos editar la parte del registro que hemos cargado, bajo la clave HKEY_LOCAL_MACHINE\MiClave

Actividad 7. Añade un archivo por lotes para su ejecución al inicio, editando el registro offline. Para ello sigue los siguientes pasos:

  1. Crea un archivo llamado C:\test.bat con el siguiente contenido y guárdalo en una carpeta del sistema:
  2. ECHO OFF ECHO "Registro modificado offline" PAUSE
  3. Apaga Windows y arranca una consola de recuperación desde el CD de instalación de Windows
  4. Ejecuta el programa regedit.exe y carga la clave HKEY_LOCAL_MACHINE del registro
  5. Selecciona la clave HKEY_LOCAL_MACHINE y carga la subclave SOFTWARE asignándole el nombre SOFTWAREOFFLINE.
  6. Accede a la clave HKLM/SOFTWAREOFFLINE y repite el proceso que seguiste anteriormente para ejecutar un archivo por lotes al inicio.
  7. Reinicia el sistema

Toma una captura en el momento en que se ejecute el archivo por lotes al iniciar sesión y guárdala con el nombre Act7-reg.png.

Modificar el registro de otra máquina

Es posible modificar el registro de una máquina remota empleando el servicio de Registro remoto. Al acceder al registro remoto, solamente tendremos acceso a las claves HKEY_LOCAL_MACHINE y HKEY_USERS. El procedimiento a seguir es el siguiente:

  1. Asegurarse de que la máquina objetivo tiene activado el servicio de Registro remoto. Para ello, buscar dicho servicio en el Panel de control\Herramientas administrativas\Servicios
  2. En la máquina desde la que queremos modificar el registro remotamente, abrimos regedit.exe y elegimos la opción Archivo\Conectar al registro de red.
  3. En la ventana Seleccionar equipo escribimos el nombre del servidor objetivo, y lo comprobamos haciendo clic sobre el botón Comprobar nombres
  4. Una vez confirmado el nombre del servidor objetivo, hacer clic en Aceptar. A continuación se abrirá una ventana donde se nos pide las credenciales del usuario. Introducimos las credenciales del Administrador, y aceptamos.
  5. Una vez hecho esto, aparecerá en el panel izquierdo de regedit un nuevo árbol con el nombre del servidor cuyo registro se está editando.

Actividad 8. Habla con un compañero y ponte de acuerdo para poder acceder a su registro en remoto.

Toma una captura donde se pueda comprobar que regedit tiene un nuevo árbol de claves correspondiente al registro remoto que estás editando. Guarda la captura con el nombre Act8-reg.png.

Emplear archivos .reg para modificar el registro.

Regedit es capaz de modificar el registro a partir de archivos .reg. El artículo Cómo agregar, modificar o eliminar subclaves y valores del Registro mediante un archivo .reg habla sobre este tema.

Consulta la página http://support.microsoft.com/kb/310516/es para entender el modo en que el registro interpreta los archivos .reg.

En la página anterior existe un error de traducción. Donde dice que el archivo .reg debe contener la cabecera Editor del Registro de Windows versión 5.00, debería decir Windows Registry Editor Version 5.00

Otro aspecto que no se comenta en la página anterior, es cómo definir el valor por defecto de una clave. Dicho valor se representa con el símbolo @

Observa los siguientes ejemplos de archivo .reg:

Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run] "mensaje"="E:\\mensaje.bat"

Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\Prueba] @="valor"

Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Prueba] "test"=dword:1

Actividad 9. Recuerda el ejercicio anterior en que añadiste una nueva entrada al menú contextual de cualquier archivo del sistema. Edita el registro utilizando Regedit y borra dicha entrada. A continuación repite el ejercicio pero utilizando para ello un archivo .reg. Finalmente aplica el archivo y comprueba los cambios.

NOTA: debes tener en cuenta que para escribir una ruta a un archivo dentro de un archivo .reg, debes utilizar el carácter de escape. Por ejemplo, la ruta C:\carpeta\archivo.txt debe escribirse como C:\\carpeta\\archivo.txt

Toma una captura donde se pueda observar el archivo .reg que has creado, y guárdala con el nombre Act9-reg.png

Modificar el registro desde la linea de comandos

Los comandos REG permiten modificar el registro empleando únicamente comandos. Esto podría ser útil en caso de querer crear un batch que modifique el registro y automatizar ciertas tareas.

Usos del comando REG
Comando Empleo
REG QUERYInquiere el valor de una clave
REG ADDAgrega una clave o valor
REG DELETEAgrega una clave o valor
REG COPYCopia claves y valores desde y hacia otro equipo o en el equipo local
REG SAVE Guarda claves del registro en archivos .HIV locales (archivo de subárbol)
REG RESTORERestaura archivo de subárbol que han sido guardados
REG LOAD, REG UNLOADTransfieren y mueven claves dentro del registro
REG COMPARECompara claves y valores dentro del registro
REG EXPORTExporta claves, subclaves y valores a un archivo REG
REG IMPORTImporta los datos exportados previamente desde un archivo REG
REG FLAGS

Las opciones del comando REG son:

Opciones del comando REG
Opción Descripción
/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 predeterminado vacío (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
Si se omite al usar el comando REG ADD, se asume que es REG_SZ.

En todos los casos se pueden usar las siguientes abreviaturas:

  • HKEY_CURRENT_USER = HKCU
  • HKEY_LOCAL_MACHINE = HKLM

Observa los siguientes comandos, y piensa qué hace cada uno. Después pruébalo y confirma lo que hace.

REG ADD "HKCU\Prueba" /ve /f

REG ADD "HKCU\Prueba" /ve /t REG_SZ /d "Dato" /f

REG ADD "HKCU\Prueba" /v test /t REG_DWORD /d 1 /f

REG QUERY HKCU\Console\

REG QUERY HKCU\Console\ /v QuickEdit

REG ADD HKCU\Console\ /v QuickEdit /d 1

REG ADD HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System\ /v DisableTaskMgr /t REG_DWORD /d 1 /f

REG DELETE HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System\ /v DisableTaskMgr /f

REG ADD HKCU \Software\Microsoft\Windows\CurrentVersion\Run /v IniciarProgramas /t REG_SZ /d "C:\aviso.cmd"

REG EXPORT HKLM\SYSTEM\CurrentControlSet\Services C:\Servicios.reg

REG IMPORT C:\Servicios.reg

Actividad 10. Abre Regedit y elimina los resultados de los ejercicos 4 y 5. Después repite dichos ejercicios empleando el comando REG, empleando un único archivo por lotes. Finalmente ejecuta el archivo por lotes, y comprueba que se han realizado las tareas pedidas.

Realiza una captura donde se pueda comprobar el resultado por pantalla de ejecutar el archivo por lotes, y guárdala con el nombre Act10-reg.png.

Actividad 11. Consulta con un comando REG los valores que creaste en la actividad anterior.

Realiza una captura donde se pueda ver el resultado de la consulta, y guárdala con el nombre Act11-reg.png

Actividad 12. Borrar con comandos REG los valores creados en el ejercicio 10.

Realiza una captura donde se pueda ver el resultado de la ejecución de los comandos, y guárdala con el nombre Act12-reg.png

Automatizar las copias de estado del sistema

En la consola de copias de seguridad (Inicio\Todos los programas\Accesorios\Herramientas del sistema\Copias de seguridad) se pueden automatizar las copias de seguridad del sistema.

Actividad 13. Automatiza las copias de estado del sistema, para que se vuelquen en el volumen que creaste en el ejercicio 2 para tal efecto.

Muestra, desde la consola de copias de seguridad, la siguiente copia programada. Toma una captura y guárdala con el nombre Act13-reg.png