2012-01-19 11:11:41 +0000 2012-01-19 11:11:41 +0000
18
18

¿Borrar la clave o el valor del registro a través de un script CMD?

¿Cómo puedo editar un archivo de script .cmd ya en producción, para que el script borre una determinada clave del registro en el registro de Windows?

En primer lugar, ¿es esto posible, y en segundo lugar (si no es posible), podría crear un archivo .reg y ejecutarlo desde el archivo .cmd?

Desde el script .cmd, no funciona:

del "[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\CurrentVersion\SampleKey]"

Este método tampoco me ha funcionado:

cmd "\networkdrive\regfiles\deleteSampleKey.reg"

Entonces desde el archivo .reg:

Windows Registry Editor Version 5.00
[
-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
]

Respuestas (5)

26
26
26
2012-03-26 11:08:49 +0000

Recomendaría usar el comando REG, en lugar de crear e importar archivos .reg.

reg delete "HKCU\Some\Registry\Path" /f

o

reg delete "HKLM\Some\Registry\Path" /f

Estos comandos pueden ser introducidos directamente en el archivo batch (.cmd).

15
15
15
2016-02-16 14:32:04 +0000

Como descrito aquí y aquí por Microsoft bajo “Removiendo entradas de registro”, puedes remover una entrada colocando un menos “-” delante de una llave como esta:

[-HKEY_LOCAL_MACHINE\SOFTWARE\YourSoft\MyKey]

Y para remover una entrada , coloca un menos “-” después del = char así:

[HKEY_LOCAL_MACHINE\SOFTWARE\YourSoft\MyKey]
"MyEntry"=-

_Nota: Esas son solo claves de ejemplo. En realidad no funcionarán.

4
4
4
2016-02-16 14:57:58 +0000

Evitaría usar otro script ya que puede hacer esto en un archivo .cmd usando los comandos REG .

Puede hacer algo similar a esto:

REG DELETE "HKEY_CURRENT_USER\SOFTWARE\SomeProgram"

Si quiere borrar sólo entradas específicas entonces debería añadir un argumento /v "EntryName" después de la ruta de la clave. Por ejemplo:

REG DELETE "HKEY_CURRENT_USER\SOFTWARE\SomeProgram" /v "EntryName"

Ambas cosas harán que se emita una advertencia antes de borrar los valores. Para evitarlo, deberías usar el argumento /f al final.

REG DELETE "HKEY_CURRENT_USER\SOFTWARE\SomeProgram" /f
3
3
3
2012-01-19 11:25:35 +0000

Utilizo el siguiente método. Esto es parte de un MRU ripper para Windows XP, que podría ayudar. Este es el texto de un archivo por lotes, que se ejecuta desde CMD o desde un atajo. Crea un archivo de registro usando simples redirecciones de eco, y luego lo importa.

REM ***START REGISTRY SHREDDER***
ECHO CREATING MRU REGISTRY
ECHO .
 ECHO > "%TMP%\MRUKILL.reg" Windows Registry Editor Version 5.00
ECHO >> "%TMP%\MRUKILL.reg" [-HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Doc Find Spec MRU]
ECHO >> "%TMP%\MRUKILL.reg" [-HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FindComputerMRU]

REM ***IMPORT THAT REG TO WIPE OUT THEM KEYS AND VALUES****
regedit "%TMP%\MRUKILL.reg"

No soy un codificador, sólo hago algunas cosas por lotes para mí, así que a menudo ni siquiera puedo leer lo que escribí, pero lo usaría como una plantilla para hacer otra cosa.

Los echos son redirigidos (>) a un archivo, con el único > para la primera redirección, y >> para añadirlo al mismo archivo. El signo - se utiliza para eliminar una entrada del registro. Probablemente sería bueno dejar la última línea y ver el archivo que ha creado antes de importarlo. La importación puede hacerse en silencio, pero no lo haré yo mismo.

Descargo de responsabilidad: Debido a que una persona puede hacer un daño grave al sistema eliminando las entradas del registro, es necesaria una copia de seguridad de la imagen del disco que pueda devolver el sistema cuando el sistema falle.

Los permisos adecuados, las elevaciones y algunas entradas del registro no sólo permitirán que el usuario las destruya, sin establecer los permisos, debido a su importancia.

Aquí hay una parte de “preguntar al usuario”, añadida sólo por diversión.

ECHO
 REM ***ASK the USER FIRST***  
ECHO DO YOU WANT TO DELETE REGISTRY MRUS?
SET /P Choice2=type "Y" to Mangle your registry, - -
ECHO . 
IF /I "%Choice2%"=="Y" GOTO SHREDD
ECHO OK WELL THEN I WON'T
ECHO By By 
   REM ***USER DECIDED AGAINST IT***
ECHO .
PAUSE
GOTO FINISH
1
1
1
2014-08-08 05:42:27 +0000

Estoy usando Windows 7 y esto es lo que obtuve a través de CMD:

Fri 08/08/2014 8:13:51.72 | C:\Users\MrCMD
>reg.exe delete /?

REG DELETE KeyName [/v ValueName | /ve | /va] [/f]

  KeyName [\Machine\]FullKey
    Machine Name of remote machine - omitting defaults to the current machine.
             Only HKLM and HKU are available on remote machines.
    FullKey ROOTKEY\SubKey
    ROOTKEY [HKLM | HKCU | HKCR | HKU | HKCC]
    SubKey The full name of a registry key under the selected ROOTKEY.

  ValueName The value name, under the selected Key, to delete.
             When omitted, all subkeys and values under the Key are deleted.

  /ve delete the value of empty value name (Default).

  /va delete all values under this key.

  /f Forces the deletion without prompt.

Examples:

  REG DELETE HKLM\Software\MyCo\MyApp\Timeout
    Deletes the registry key Timeout and its all subkeys and values

  REG DELETE \ZODIAC\HKLM\Software\MyCo /v MTU
    Deletes the registry value MTU under MyCo on ZODIAC

O, creo que podemos BORRAR algunas claves o MODIFICAR algunos valores por este algoritmo:

  1. Exportar la ubicación del registro de las claves/valores que queremos borrar/modificar en un archivo (File01.reg).
  2. Editar/modificar la clave/valor apropiado y guardarlo en un nuevo archivo (Archivo02.reg).
  3. Importar ese archivo modificado (Archivo02.reg) en el registro de Windows.

Referencia al registro de EXPORTACIÓN.

Fri 08/08/2014 8:24:53.19 | C:\Users\mardir01
>reg.exe export /?

REG EXPORT KeyName FileName [/y]

  Keyname ROOTKEY[\SubKey] (local machine only).
    ROOTKEY [HKLM | HKCU | HKCR | HKU | HKCC]
    SubKey The full name of a registry key under the selected ROOTKEY.

  FileName The name of the disk file to export.

  /y Force overwriting the existing file without prompt.

Examples:

  REG EXPORT HKLM\Software\MyCo\MyApp File01.reg
    Exports all subkeys and values of the key MyApp to the file File01.reg

Referencia al registro de IMPORTACIÓN.

>reg.exe import /?

REG IMPORT FileName

  FileName The name of the disk file to import (local machine only).

Examples:

  REG IMPORT File02.reg
    Imports registry entries from the file File02.reg

Ideas más brillantes para mejorar son bienvenidas. :) :) :)