JBeExJBeEx

Cómo borrar claves del registro de Windows: .reg, reg, PowerShell, scripts e INF

Cómo borrar claves del registro de Windows: .reg, reg, PowerShell, scripts e INF

Hay varias formas de borrar claves y valores del registro de Windows sin abrir el Editor del Registro a mano: con archivos .reg, con el comando reg, con PowerShell, con scripts de Windows Script Host o con archivos .inf. Son muy útiles para automatizar cambios en varios equipos o para incluirlos en un archivo .bat.

Cuidado: borrar claves del registro equivocadas puede hacer que un programa o el propio Windows dejen de funcionar. Antes de borrar nada, haz una copia de la clave: en el Editor del Registro (regedit), haz clic derecho sobre ella y elige Exportar. También puedes crear un punto de restauración.

En todos los ejemplos usaremos una clave de prueba, HKEY_CURRENT_USER\Software\MiPrograma, con un valor llamado DirectorioInicio.

Borrar claves del registro con archivos .reg

Un archivo .reg es un archivo de texto que Windows aplica al registro al hacer doble clic sobre él. Además de añadir claves, sirve para borrarlas usando un guion (-).

Todo archivo .reg debe empezar con esta línea, seguida de una línea en blanco:

Windows Registry Editor Version 5.00

Importante: en los archivos .reg hay que escribir el nombre completo de la clave raíz (HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE…). Las abreviaturas como HKCU o HKLM no funcionan aquí.

Borrar una clave completa

Pon un guion delante del nombre de la clave. Se borra con todos sus valores y subclaves:

Windows Registry Editor Version 5.00

[-HKEY_CURRENT_USER\Software\MiPrograma]

Borrar un valor

Escribe la clave y, debajo, el nombre del valor seguido de =-:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\MiPrograma]
"DirectorioInicio"=-

Vaciar el valor predeterminado

El valor predeterminado de una clave se representa con @:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\MiPrograma]
@=-

Aplicar el archivo desde la línea de comandos

Para aplicar un archivo .reg sin que Windows pida confirmación, usa regedit con el modificador /s:

regedit.exe /s ruta\archivo.reg

Si el archivo modifica claves de HKEY_LOCAL_MACHINE, hay que ejecutarlo como administrador.

Borrar claves con el comando reg

La herramienta reg.exe viene incluida en Windows desde XP y se puede usar en el Símbolo del sistema o en archivos .bat. La sintaxis para borrar es:

reg delete [\\equipo\]clave [/v valor | /ve | /va] [/f]
  • \\equipo\: nombre de un equipo remoto. Si se omite, se usa el equipo local. En equipos remotos solo se puede acceder a HKLM y HKU.
  • clave: ruta completa de la clave, empezando por la raíz. Aquí sí se admiten las abreviaturas HKLM, HKCU, HKCR, HKU y HKCC.
  • /v valor: borra el valor indicado. Si el nombre tiene espacios, va entre comillas.
  • /ve: borra el valor predeterminado de la clave.
  • /va: borra todos los valores de la clave, pero no la clave ni sus subclaves.
  • /f: borra sin pedir confirmación.

Si no indicas /v, /ve ni /va, se borra la clave entera con todas sus subclaves.

Ejemplos de reg delete

Borrar el valor DirectorioInicio:

reg delete HKCU\Software\MiPrograma /v DirectorioInicio /f

Borrar el valor predeterminado de la clave:

reg delete HKCU\Software\MiPrograma /ve /f

Borrar todos los valores de la clave, manteniendo la clave y sus subclaves:

reg delete HKCU\Software\MiPrograma /va /f

Borrar solo una subclave:

reg delete HKCU\Software\MiPrograma\Preferencias /f

Borrar la clave completa, con todos sus valores y subclaves:

reg delete HKCU\Software\MiPrograma /f

Consejo: antes de borrar, puedes hacer una copia de la clave con reg export HKCU\Software\MiPrograma copia.reg. Si algo sale mal, la restauras con reg import copia.reg.

Borrar claves con PowerShell

En Windows 10 y 11, PowerShell es la forma más cómoda de trabajar con el registro en scripts, porque lo trata como si fuera una unidad de disco (HKCU: y HKLM:).

Borrar un valor:

Remove-ItemProperty -Path "HKCU:\Software\MiPrograma" -Name "DirectorioInicio"

Borrar una clave con todas sus subclaves:

Remove-Item -Path "HKCU:\Software\MiPrograma" -Recurse

Borrar todos los valores de una clave, sin borrar la clave:

Remove-ItemProperty -Path "HKCU:\Software\MiPrograma" -Name *

Para comprobar antes qué se va a borrar sin borrar nada, añade -WhatIf al final del comando. Y si no quieres que el script se detenga cuando la clave o el valor no existen, añade -ErrorAction SilentlyContinue.

Borrar claves con Windows Script Host (VBScript y JScript)

Windows Script Host permite trabajar con el registro desde scripts de VBScript (.vbs) o JScript (.js), que se ejecutan con cscript script.vbs o con doble clic.

Nota: Microsoft ha anunciado la retirada progresiva de VBScript de Windows. Para scripts nuevos es mejor usar PowerShell. Estos métodos siguen siendo útiles para mantener scripts antiguos.

El método RegDelete

Se usa el método RegDelete del objeto WScript.Shell:

  • Para borrar una clave, la ruta debe terminar en barra invertida (\).
  • Para borrar un valor, la ruta no termina en barra.

Importante: RegDelete no puede borrar una clave que tenga subclaves; primero hay que borrar las subclaves una a una. Para claves con subclaves es más sencillo usar reg delete o PowerShell.

Ejemplo en VBScript que borra el valor DirectorioInicio y después la clave:

Set objShell = WScript.CreateObject("WScript.Shell")
objShell.RegDelete "HKCU\Software\MiPrograma\DirectorioInicio"
objShell.RegDelete "HKCU\Software\MiPrograma\"

El mismo ejemplo en JScript. Aquí cada barra invertida debe escribirse doble (\\), porque en JScript la barra invertida sirve para marcar caracteres especiales:

var objShell = WScript.CreateObject("WScript.Shell");
objShell.RegDelete("HKCU\\Software\\MiPrograma\\DirectorioInicio");
objShell.RegDelete("HKCU\\Software\\MiPrograma\\");

Borrar todos los valores recreando la clave

Con WSH no hay una orden para vaciar una clave de golpe. La forma más sencilla es borrar la clave y volver a crearla con RegWrite:

  • Ruta: si termina en \ se crea una clave; si no, un valor.
  • Contenido: el dato del valor o, si es una clave, de su valor predeterminado.
  • Tipo: REG_SZ, REG_EXPAND_SZ, REG_DWORD o REG_BINARY. Es opcional; por defecto es REG_SZ.

En VBScript:

Set objShell = WScript.CreateObject("WScript.Shell")
objShell.RegDelete "HKCU\Software\MiPrograma\"
objShell.RegWrite "HKCU\Software\MiPrograma\", "Este es mi programa"
objShell.RegWrite "HKCU\Software\MiPrograma\DirectorioInicio", "D:\MiPrograma", "REG_SZ"

En JScript:

var objShell = WScript.CreateObject("WScript.Shell");
objShell.RegDelete("HKCU\\Software\\MiPrograma\\");
objShell.RegWrite("HKCU\\Software\\MiPrograma\\", "Este es mi programa");
objShell.RegWrite("HKCU\\Software\\MiPrograma\\DirectorioInicio", "D:\\MiPrograma", "REG_SZ");

Si la clave no existe, RegDelete da un error y el script se detiene. Para evitarlo, usa On Error Resume Next al principio del script en VBScript, o un bloque try { … } catch (e) { } en JScript.

Borrar claves con archivos INF

Los archivos de información de instalación (.inf) son los que usa Windows para instalar controladores y componentes. También pueden añadir y borrar claves del registro, copiar o borrar archivos y registrar DLL.

Su formato es parecido al de un archivo .ini: está dividido en secciones con el nombre entre corchetes.

Estructura básica

Todo archivo INF necesita una sección [Version] con la entrada Signature:

  • $Windows NT$: sistemas basados en NT (Windows 2000, XP y posteriores).
  • $Chicago$: todos los sistemas Windows. Es la más habitual para estos usos.

Al instalar el archivo, Windows busca la sección [DefaultInstall], que indica qué secciones ejecutar mediante acciones. Algunas de las más usadas:

  • AddReg: añade claves y valores al registro.
  • DelReg: borra claves y valores del registro.
  • CopyFiles: copia archivos.
  • DelFiles: borra archivos.
  • RenFiles: renombra archivos.
  • RegisterDlls / UnregisterDlls: registra o anula el registro de DLL.

No importa el orden en que escribas las acciones: Windows las ejecuta en su orden propio (por ejemplo, DelReg siempre antes que AddReg).

Borrar claves y valores con DelReg

En la sección indicada por DelReg, se escribe una línea por cada clave o valor a borrar:

raíz,clave[,valor]
  • raíz: HKCR, HKCU, HKLM o HKU.
  • clave: ruta de la clave, sin la raíz.
  • valor: si se indica, se borra solo ese valor; si no, la clave entera.

Ejemplo que borra el valor DirectorioInicio y la subclave Preferencias:

[Version]
Signature=$Chicago$

[DefaultInstall]
DelReg=BorraEsto

[BorraEsto]
HKCU,Software\MiPrograma,DirectorioInicio
HKCU,Software\MiPrograma\Preferencias

Borrar y volver a crear la clave

Para vaciar una clave, puedes borrarla con DelReg y crearla de nuevo con AddReg. Las líneas de AddReg tienen este formato:

raíz,clave,[valor],[tipo],[contenido]

Si dejas el nombre del valor en blanco, el contenido se asigna al valor predeterminado de la clave. El tipo se indica con un número:

  • 0x00000000: REG_SZ (texto).
  • 0x00000001: REG_BINARY (binario).
  • 0x00010000: REG_MULTI_SZ (varias cadenas).
  • 0x00010001: REG_DWORD (número).
  • 0x00020000: REG_EXPAND_SZ (texto con variables).

Ejemplo:

[Version]
Signature=$Chicago$

[DefaultInstall]
DelReg=BorraEsto
AddReg=CreaEsto

[BorraEsto]
HKCU,Software\MiPrograma

[CreaEsto]
HKCU,Software\MiPrograma,,,"Esta es mi aplicación"

Ejecutar un archivo INF

Puedes hacer clic derecho sobre el archivo .inf y elegir Instalar (en Windows 11, Mostrar más opciones > Instalar). Para ejecutarlo desde la línea de comandos o un archivo .bat:

%SystemRoot%\System32\rundll32.exe setupapi,InstallHinfSection DefaultInstall 132 ruta\archivo.inf