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

Eliminar uma chave de registo ou valor através de um script CMD?

Como editar um ficheiro de script .cmd já em produção, para que o script elimine uma determinada chave de registo no registo do Windows?

Em primeiro lugar, isto é possível, e em segundo lugar (se não for possível), posso criar um ficheiro .reg e executar esse ficheiro com o ficheiro .cmd?

A partir do script .cmd, não está a funcionar:

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

Este método também não funcionou comigo:

cmd "\networkdrive\regfiles\deleteSampleKey.reg"

Depois a partir do ficheiro .reg:

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

Respostas (5)

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

Eu recomendaria utilizar o comando REG, em vez de criar e importar ficheiros .reg.

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

Estes comandos podem ser introduzidos directamente no ficheiro do lote (.cmd).

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

Como descrito aqui e aqui pela Microsoft em “Removing registry entries”, você pode remover uma key* colocando um sinal de menos “-” em frente de uma chave como essa:

[-HKEY_LOCAL_MACHINE\SOFTWARE\YourSoft\MyKey]

E para remover uma entry , coloque um sinal de menos “-” depois do = char assim:

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

Note: Essas são apenas exemplos de chaves. Na verdade não funcionam.

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

Eu evitaria usar outro script pois você can faz isto num ficheiro .cmd usando os comandos REG .

Pode fazer algo semelhante a isto:

REG DELETE "HKEY_CURRENT_USER\SOFTWARE\SomeProgram"

Se quiser apagar apenas entradas específicas então deve adicionar um argumento /v "EntryName" após o caminho para a chave. E. g:

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

Ambos provocarão a emissão de um aviso antes de apagar os valores. Para evitar isso, deve utilizar o argumento /f no final.

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

Utilizo o seguinte método. Isto faz parte de um ripper MRU para Windows XP, que pode ajudar. Este é o texto de um ficheiro batch, que é executado a partir de CMD ou a partir de um atalho. Ele cria um ficheiro de registo usando simples redireccionamentos de eco, depois importa-o.

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"

Não sou um codificador, apenas faço algumas coisas em lote para mim, por isso muitas vezes nem sequer consigo ler o que escrevi, mas usaria isso como modelo para fazer outra coisa.

Os echos são redireccionados (>) para um ficheiro, com o único > para o primeiro redireccionamento, e o >> para anexar ao mesmo ficheiro. O sinal - é utilizado para remover uma entrada de registo. Seria provavelmente bom deixar de fora a última linha, e ver o ficheiro que criou antes de importar. A importação pode ser feita silenciosamente, mas eu próprio não o farei.

Declaração de exoneração de responsabilidade: Porque uma pessoa pode fazer alguns danos graves ao sistema removendo entradas de registo, é necessária uma cópia de segurança de imagem de disco que possa devolver o sistema quando o sistema falhar.

Permissões adequadas, elevações e algumas entradas no registo não permitirão apenas que o utilizador as destrua, sem definir as permissões, devido à sua importância.

Aqui está uma parte “pergunte ao utilizador”, adicionada apenas por diversão.

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

Estou a usar o Windows 7 e foi isto que obtive através do 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

ou, penso que podemos APAGAR algumas chaves ou MODIFICAR alguns valores através deste algoritmo:

  1. Exportar localização do registo de chaves/valores que queremos apagar/modificar para um ficheiro (File01.reg).
  2. Editar/modificar chave/valor adequado e guardar num novo ficheiro (File02.reg).
  3. Importar esse ficheiro modificado (File02.reg) para o registo do Windows.

Referência ao registo EXPORT.

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

Referência ao registo IMPORT.

>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

Ideias mais brilhantes para melhorar são bem-vindas. :) :) :)