Eliminare la chiave di registro o il valore tramite uno script CMD?


18

Come posso modificare un .cmdfile di script già in produzione per fare in modo che lo script elimini una determinata chiave di registro nel registro di Windows?

In primo luogo, è anche possibile, e in secondo luogo (se ciò non è possibile), è possibile creare un .regfile ed eseguirlo con il .cmdfile?

Dall'interno dello .cmdscript, non funziona:

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

Questo metodo non ha funzionato neanche per me:

cmd "\\networkdrive\regfiles\deleteSampleKey.reg"

Quindi dall'interno del .regfile:

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

1
usando un file .reg, anche da un'unità di rete dovrebbe funzionare bene. In caso contrario, mi aspetto che dipenda dall'UAC o da altre misure di sicurezza.
William Hilsum,

Risposte:


26

Consiglierei di usare il comando REG , piuttosto che creare e importare file .reg.

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

o

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

Questi comandi possono essere inseriti direttamente nel .cmdfile batch ( ).


15

Come descritto qui e qui da Microsoft in "Rimozione delle voci di registro", è possibile rimuovere una chiave posizionando il segno "-" davanti a una chiave del genere:

[-HKEY_LOCAL_MACHINE\SOFTWARE\YourSoft\MyKey]

E per rimuovere una voce , inserisci un segno meno "-" dopo il = char in questo modo:

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

Nota: quelli sono solo tasti di esempio. In realtà non funzioneranno.


Funziona davvero.
Peter Mortensen,


@Peter Mortensen Questo è anche un riferimento più ufficiale. Grazie per aver condiviso.
Bruno Bieri,

ironicamente quel link di supporto di microsoft attualmente fornisce "Errore del server nell'applicazione '/ app / content'.
sdjuan,

@sdjuan il collegamento del supporto Microsoft funziona di nuovo.
Bruno Bieri,

4

Eviterei di usare un altro script in quanto puoi farlo in un file .cmd usando i comandi REG .

Puoi fare qualcosa di simile a questo:

REG DELETE "HKEY_CURRENT_USER\SOFTWARE\SomeProgram"

Se si desidera eliminare solo voci specifiche, è necessario aggiungere un /v "EntryName"argomento dopo il percorso della chiave. Per esempio:

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

Entrambi causeranno un avviso prima dell'eliminazione dei valori. Per evitarlo, dovresti usare l' /fargomento alla fine.

REG DELETE "HKEY_CURRENT_USER\SOFTWARE\SomeProgram" /f

Grazie. L'unico posto in rete che ho trovato che fa riferimento a una sottochiave.
square_eyes

3

Uso il seguente metodo Questo fa parte di un ripper MRU per Windows XP, che potrebbe aiutare. Questo è il testo di un file batch, che viene eseguito da CMD o da un collegamento. Crea un file di registro usando semplici reindirizzamenti di eco, quindi 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"

Non sono un programmatore, faccio solo alcune cose in batch per me stesso, quindi spesso non riesco nemmeno a leggere quello che ho scritto, ma lo userei come modello per fare qualcos'altro.

Il echosvengono reindirizzati ( >) in un file, con il singolo >per la prima reindirizzamento, e >>da aggiungere al file stesso. Il -segno è usato per rimuovere una voce di registro. Probabilmente sarebbe utile lasciare l'ultima riga e visualizzare il file creato prima dell'importazione. L'importazione può essere eseguita in silenzio, ma non lo farò da sola.

Dichiarazione di non responsabilità: poiché una persona può danneggiare seriamente il sistema rimuovendo le voci di registro, è necessario un backup dell'immagine del disco che può restituire il sistema in caso di guasto del sistema.

Autorizzazioni appropriate, prospetti e alcune voci nel registro non consentiranno solo all'utente di distruggerle, senza impostare le autorizzazioni, a causa della loro importanza.

Ecco una parte "chiedi all'utente", aggiunta solo per divertimento.

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
su Vista + questo metodo invocherà UAC. e l'utente dovrà accettare o rifiutare questa azione. L'esecuzione dello script come amministratore lo ignorerà però
Piotr Kula il

1
non dovresti usare% USERPROFILE% \ Local Settings \ Temp, ma% TMP%. il primo funziona solo su sistemi inglesi
kinokijuf,

@kinokijuf Feexed, anche in questo modo sembra molto più bello. Probabilmente è stato impostato in questo modo per tenerlo sul disco di sistema per me, perché a volte ho inviato Temps a ramdisk o ai dischi di dati.
Psycogeek,

1

Sto usando Windows 7 e questo è ciò che ho ottenuto tramite 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

Oppure, penso che possiamo ELIMINARE alcune chiavi o MODIFICARE alcuni valori con questo algoritmo:

  1. Esporta la posizione del registro di chiavi / valori che vogliamo eliminare / modificare in un file (File01.reg).
  2. Modifica / modifica chiave / valore appropriato e salva in un nuovo file (File02.reg).
  3. Importa quel file modificato (File02.reg) nel registro di Windows.

Riferimento al registro 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

Riferimento al registro 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

Idee più luminose per il miglioramento sono benvenute. :) :) :)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.