Cómo borrar información del registro desde línea de comandos
1 Usando ficheros .REG
Podemos usar ficheros .REG para borrar claves del registro. Para ello ponemos un guión delante del nombre de la clave a borrar. Ejemplo, para borrar la clave HKCU\Software\MiAplicacion:
[-HKCU\Software\MiAplicacion]
Para vaciar el valor predeterminado de una clave:
[HKCU\Software\MiAplicacion]
@=-
Para borrar un valor dentro de una clave (en este caso el valor DirectorioInicio)
[HKCU\Software\MiAplicacion]
“DirectorioInicio”=-
Para lanzar un fichero .REG desde línea de comandos usaremos regedit.exe de la siguiente forma:
regedit.exe /s ruta\nombre_fichero.reg
El modificador /s provoca que se combine el contenido del fichero con el registro sin pedir confirmación.
2 Usando el programa REG
Podemos utilizar la utilidad REG.EXE desde línea de comandos o desde un .BAT de la siguiente forma:
reg delete [\\equipo\]clave [/va | /ve | /v valor] [/f]
equipo: nombre del equipo remoto (equipo local si se omite).
clave: Nombre completo de la subclave a eliminar o donde se elimina, empezando desde la raíz (se pueden usar abreviaturas: HKLM, HKU, etc.).
/va: Elimina todos los valores de la subclave y el contenido del valor predeterminado.
/ve: Elimina el valor predeterminado de la subclave.
/v valor: Elimina el valor de nombre “valor” de la subclave (se debe encerrar entre comillas si incluye espacio/s).
/f: Obliga a REG a reemplazar las subclaves y valores sin confirmación.
Ejemplos:
Esta línea borra el contenido del valor predeterminado de la clave HKEY_CURRENT_USER\Software\MiPrograma.
reg delete HKCU\Software\MiPrograma /ve /f
Esta línea borra el valor DirectorioInicio de la clave HKEY_CURRENT_USER\Software\MiPrograma.
reg delete HKCU\Software\MiPrograma /v DirectorioInicio /f
Esta línea borra todos los valores de la clave HKEY_CURRENT_USER\Software\MiPrograma y vacía de contenido al valor predeterminado.
reg delete HKCU\Software\MiPrograma /va /f
Esta línea borra la clave HKEY_CURRENT_USER\Software\MiPrograma con todos sus valores y subclaves:
reg delete HKCU\Software\MiPrograma /f
Si quisiéramos borrar una subclave de ella pero sin borrar el resto deberíamos lanzar:
reg delete HKCU\Software\MiPrograma\Subclave /f
Nota: REG.EXE es instalado en Windows 2000 desde el CD de instalación en \Support\ResKit
3 Usando WSH (Windows Scripting Host)
Podemos crear ficheros de script de JScript o de VBScript, lanzándolos con “cscript nombre_de_script.vbs” o “cscript nombre_de_script.js”, según el lenguaje utilizado. Para borrar una clave o valor se utiliza el método RegDelete:
JScript:
objeto.RegDelete(clave_o_valor);
VBScript:
objeto.RegDelete clave_o_valor
Parámetros
objeto: Objeto Shell
clave_o_valor: Subclave o valor a borrar. Para que se borre una subclave, deberá acabar con una barra de división entera o (back slash: “\”) y si se debe borrar un valor se hará sin la barra de división entera.
Ejemplos de RegDelete
JScript
- Este ejemplo borra el valor DirectorioInicio de la clave HKEY_CURRENT_USER\Software\MiPrograma:
var obj_Shell = WScript.CreateObject(“WScript.Shell”);
obj_Shell.RegDelete(“HKCU\\Software\\MiPrograma\\DirectorioInicio”);
- Este ejemplo borra la clave HKEY_CURRENT_USER\Software\MiPrograma:
var obj_Shell = WScript.CreateObject(“WScript.Shell”);
obj_Shell.RegDelete(“HKCU\\Software\\MiPrograma\\”);
VBScript
- Este ejemplo borra el valor DirectorioInicio de la clave HKEY_CURRENT_USER\Software\MiPrograma:
Set obj_Shell = WScript.CreateObject(“WScript.Shell”)
obj_Shell.RegDelete “HKCU\Software\MiPrograma\DirectorioInicio”
- Este ejemplo borra la clave HKEY_CURRENT_USER\Software\MiPrograma:
Set obj_Shell = WScript.CreateObject(“WScript.Shell”)
obj_Shell.RegDelete “HKCU\Software\MiPrograma\”
Una limitación de trabajar con WSH para esta tarea, en comparación con REG, es que no se pueden borrar los valores contenidos sin borrar la clave, pues los valores habría que ir pasándolos uno a uno y en caso de que no exista uno se produciría un error que interrumpiría el script. Hay dos formas de subsanar este error:
- Usando try y catch en JScript o On Error Resume Next en VBScript. Esto nos obliga a escribir en el script cada uno de los valores que contiene o puede contener la clave. Es un procedimiento costoso que no paso a detallar (quizás en una ampliación de este tip).
- Borrando toda la clave y volviendo a crearla posteriormente. Esto nos obliga a ver también el método RegWrite:
JScript:
objeto.RegWrite(nombre, valor[, tipo]);
VBScript:
objeto.RegWrite clave_o_valor, contenido[, tipo]
Parámetros
-
- objeto: Objeto Shell.
- clave_o_valor: Subclave o valor a crear. Si es una subclave deberá acabar con barra de división entera (back slash: “\”).
- contenido: si se crea una clave es el contenido del valor predeterminado, si se crea un valor es el contenido del valor. Si la clave o el valor ya existían, cambia el contenido del valor predeterminado o el valor según proceda.
- tipo: REG_SZ, REG_EXPAND_SZ, REG_DWORD o REG_BINARY, cualquier otra provocará que RegWrite devuelva E_INVALIDARG.
Ejemplos de RegWrite:
-
- JScript
- Creación de la clave HKEY_CURRENT_USER\Software\MiPrograma con el valor predeterminado “Este es mi programa” y con el valor “DirectorioInicio” con el contenido “d:\MiPrograma”:var obj_Shell = WScript.CreateObject(“WScript.Shell”);
obj_Shell.RegWrite(“HKCU\\Software\\MiPrograma\\”, “Este es mi programa”);
obj_Shell.RegWrite(“HKCU\\Software\\MiPrograma\\DirectorioInicio”, “d:\\MiPrograma”, “REG_SZ”); - Una vez creados claves y valor anteriores podemos cambiarlos:var obj_Shell = WScript.CreateObject(“WScript.Shell”);
obj_Shell.RegWrite(“HKCU\\Software\\MiPrograma\\”, “Este es mi programa cambiado”);
obj_Shell.RegWrite(“HKCU\\Software\\MiPrograma\\DirectorioInicio”, _ “d:\\MiProgramaCambiado”, “REG_SZ”);
- Creación de la clave HKEY_CURRENT_USER\Software\MiPrograma con el valor predeterminado “Este es mi programa” y con el valor “DirectorioInicio” con el contenido “d:\MiPrograma”:var obj_Shell = WScript.CreateObject(“WScript.Shell”);
- VBScript
- Creación de la clave HKEY_CURRENT_USER\Software\MiPrograma con el valor predeterminado “Este es mi programa” y con el valor “DirectorioInicio” con el contenido “d:\MiPrograma”:Set obj_Shell = WScript.CreateObject(“WScript.Shell”)
obj_Shell.RegWrite “HKCU\Software\MiPrograma\”, “Este es mi programa”
obj_Shell.RegWrite “HKCU\Software\MiPrograma\DirectorioInicio”,
”d:\MiPrograma”, “REG_SZ” - Una vez creados claves y valor anteriores podemos cambiarlos:Set obj_Shell = WScript.CreateObject(“WScript.Shell”)
obj_Shell.RegWrite “HKCU\Software\MiPrograma\”, “Este es mi programa cambiado”
obj_Shell.RegWrite “HKCU\\Software\MiPrograma\DirectorioInicio”, _
”d:\MiProgramaCambiado”, “REG_SZ”
- Creación de la clave HKEY_CURRENT_USER\Software\MiPrograma con el valor predeterminado “Este es mi programa” y con el valor “DirectorioInicio” con el contenido “d:\MiPrograma”:Set obj_Shell = WScript.CreateObject(“WScript.Shell”)
- JScript
Por tanto, para borrar una clave y después recrearla se haría de la siguiente forma:
- JScript
var obj_Shell = WScript.CreateObject(“WScript.Shell”);
obj_Shell.RegDelete(“HKCU\\Software\\MiPrograma\\”);
obj_Shell.RegWrite(“HKCU\\Software\\MiPrograma\\”, “Este es mi programa”);
- VBScript
Set obj_Shell = WScript.CreateObject(“WScript.Shell”)
obj_Shell.RegDelete “HKCU\Software\MiPrograma\”¦lt;br /> obj_Shell.RegWrite “HKCU\Software\MiPrograma\”, “Este es mi programa”
4 Usando archivos INF
Los archivos de información de instalación (INF) permiten realizar tareas como:
- Instalar documentos.
- Personalizar equipos por medio del registro.
- Actualizar componentes.
- Copiar y ejecutar paquetes de instalación.
- Deshabilitar características eliminando archivos.
Su aspecto es parecido al de los archivos REG o INI. está dividido en secciones, definidas por un nombre encerrado entre corchetes y dentro de cada sección puede haber un número indeterminado de líneas.
Todo archivo INF debe tener una sección [Version] que tiene una única entrada Signature; esto identifica al archivo como INF válido:
[Version]
Signature=$CHICAGO$
Los valores posibles de Signature son:
Valor | Significado |
$Windows NT$ | Sistemas operativos de núcleo NT |
$Windows 95$ | Sistemas operativos Windows 9x/Me |
$Chicago$ | Todos los sistemas operativos Windows |
Cuando se ejecuta un archivo INF (click derecho sobre él y seleccionar “Instalar”) lo primero que hace el sistema es buscar la sección [DefaultInstall], que contiene llamadas a las secciones que contienen las líneas que se ejecutarán. Esto lo realiza por medio de una serie de palabras clave que identifican el tipo de tarea que realizará la lista de secciones (separadas por comas) que tiene asignada. El formato de estas entradas es:
acción=sección[,sección]…
Algunos de las acciones son:
- AddReg: Secciones que añaden claves y valores al registro.
- CopyFiles: Secciones que copian archivos.
- CopyINF: Secciones que copian archivos INF. Sólo disponible a partir de XP, si bien se puede usar en Windows 2000 instalando cocpyinf que viene en el Driver Development Kit en la carpeta \Tools
- DelReg: Secciones que eliminan claves y valores del registro.
- DelFiles: Secciones que borran archivos
- Ini2Reg: Secciones que llevan al registro entradas de los archivos INI.
- RegisterDlls: Secciones que registran DLL’s.
- RenFiles: Secciones que renombran archivos.
- UpdateIniFields: Secciones que actualizan los campos en un archivo INI.
- UpdateInis: Secciones que cambian líneas de los archivos INI.
- UnregisterDlls: Secciones que eliminan el registro de DLL’s.
Es igual el orden en que se escriban las acciones en la sección [DefaultInstall], pues el sistema establecerá el orden según las acciones; DelReg se ejecutará antes que AddReg, por ejemplo.
Una vez vista esta breve introducción a los ficheros INF veremos cómo podemos quitar calves y valores del registro usando este tipo de ficheros. Recapitulando vemos que necesitaremos definir la sección [Version], la sección [DefaultInstall]. Ahora, en la sección [DefaultInstall], deberemos crear una entrada de tipo DelReg que apunte a una sección personalizada donde aparecerán las entradas que se ejecutarán para borrar claves y/o valores; a esta sección (en el ejemplo) la llamaremos [BorraEsto]:
[DefaultInstall]
DelReg=BorraEsto
En esta sección que crearemos, pondremos una línea por cada clave o valor a borrar, con la siguiente sintaxis:
Clave troncal, Clave[,Valor]
Parámetros
- Clave troncal: en nombre largos o cortos, es decir HKCR (o HKEY_CLASSES_ROOT), HKCU (o HKEY_CURRENT_USER), HKLM (o HKEY_LOCAL_MACHINE) o HKU (o HKEY_USERS).
- Clave: nombre de la clave a eliminar o que contiene el valor que queremos eliminar.
- Nombre: nombre del valor que queremos eliminar.
Con todo esto, un ejemplo de fichero INF que borrara el valor DirectorioInicio de la clave HKEY_CURRENT_USER\Software\MiPrograma y que borrase la clave HKEY_CURRENT_USER\Software\MiPrograma\Preferencias quedaría así:
[Version]
Signature=$Chicago$
[DefaultInstall]
DelReg=BorraEsto
[BorraEsto]
HKCU,Software\MiPrograma,DirectorioInicio
HKEY_CURRENT_USER,Software\MiPrograma\Preferencias
Por último, si queremos que se borren todos los valores contenidos en una clave borrando la clave y recreándola, deberemos crear una sección [CreaEsto] invocada en una línea AddReg de la sección [DefaultInstall]:
[DefaultInstall]
AddReg=CreaEsto
En esta sección [CreaEsto] crearemos una línea por cada clave o valor que queramos crear. La sintaxis es:
Clave troncal, [clave], [valor], [tipo], [contenido]
Parámetros
- Clave troncal: en nombre largos o cortos, es decir HKCR (o HKEY_CLASSES_ROOT), HKCU (o HKEY_CURRENT_USER), HKLM (o HKEY_LOCAL_MACHINE) o HKU (o HKEY_USERS).
- Clave: nombre de la clave a crear o que contiene el valor que queremos crear.
- Valor: nombre del valor que queremos crear. Si se deja en blanco y se establece un dato en contenido, el dato será el contenido del valor predeterminado de la clave.
- Tipo: Tipo de dato que contiene el valor expresado en formato numérico hexadecimal. Puede ser:
Tipo | Significa |
0×00000000 | Dato REG_SZ |
0×00000001 | Dato REG_BINARY |
0×00010000 | Dato REG_MULTI_SZ |
0×00010001 | Dato REG_DWORD |
0×00020000 | Dato REG_EXPAND_SZ |
- Contenido: Dato que contiene el valor.
Es decir, que para eliminar toda la clave y recrearla (pondremos de valor predeterminado “Esta es mi aplicación”):
[Version]
Signature=$Chicago$
[DefaultInstall]
DelReg=BorraEsto
AddReg=CreaEsto
[BorraEsto]
HKCU,Software\MiPrograma
[CreaEsto]
HKCU,Software\MiPrograma,,,”Esta es mi aplicación”
Vale, vale, muy bonito todo, pero ¿cómo hago para que un fichero INF se ejecute de otra manera que no sea click derecho sobre el y pulsar sobre “Instalar”? Pues lo haremos desde línea de comandos o un fichero BAT con la siguiente línea:
%SystemRoot%\System32\rundll32.exe setupapi,InstallHinfSection DefaultInstall 132 ruta_nombre_fichero.INF
5 Todavía no, pero…
Microsoft está desarrollando un nuevo shell, Monad Shell (MSH) que es una maravilla. Para quien haya manejado Unix, el shell de los sistemas Windows de núcleo NT (cmd) se le antojará algo poco potente. Monad Shell es la respuesta a estos administradores, pues es capaz de hacer cosas tan avanzadas como los shell’s de Unix (csh, ksh, sh, etc) y además con la ventaja de estar orientado a entornos Microsoft, con lo que hace lindezas como listar procesos filtrados en concepto a determinados conceptos, como sea la memoria virtual utilizada, y volcar el resultado a, por ejemplo, un libro de Excel o una página HTML o XML. Una de las cosas que se pueden manejar desde Monad Shell es el registro. En esta trascripción de un chat del 7 de Diciembre de 2005 podemos saber de algo de esta maravilla:
http://technet.microsoft.com/es-es/cc730539(en-us).aspx
Fuente: http://multingles.net/docs/ferbanjo_tips/borrar_registro.htm
Tuitear 2.738 Veces leído 0 comentarios |
18 octubre 2009 en Informática | tags: Informática |