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

Supprimer une clé ou une valeur de registre via un script CMD ?

Comment modifier un fichier de script .cmd déjà en production, afin que le script supprime une certaine clé de registre dans le registre de Windows ?

Premièrement, est-ce possible, et deuxièmement (si ce n'est pas possible), pourrais-je créer un fichier .reg et exécuter ce fichier à partir du fichier .cmd ?

A partir du script .cmd, cela ne fonctionne pas :

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

Cette méthode n'a pas fonctionné pour moi non plus :

cmd "\networkdrive\regfiles\deleteSampleKey.reg"

Puis à partir du fichier .reg :

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

Réponses (5)

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

Je recommande d'utiliser la commande REG, plutôt que de créer et d'importer des fichiers .reg.

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

ou

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

Ces commandes peuvent être entrées directement dans le fichier batch (.cmd).

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

Comme décrit ici et ici par Microsoft sous “Suppression des entrées de registre”, vous pouvez supprimer une clé en plaçant un “-” moins devant une clé comme celle-là :

[-HKEY_LOCAL_MACHINE\SOFTWARE\YourSoft\MyKey]

Et pour supprimer une entrée , placez un “-” moins après le = char comme celui-là :

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

_Note : Ce ne sont que des exemples de clés. Elles ne fonctionneront pas vraiment.

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

J'éviterais d'utiliser un autre script car vous pouvez le faire dans un fichier .cmd en utilisant les commandes REG .

Vous pouvez faire quelque chose de similaire à ceci :

REG DELETE "HKEY_CURRENT_USER\SOFTWARE\SomeProgram"

Si vous souhaitez supprimer uniquement des entrées spécifiques, vous devez ajouter un argument /v "EntryName" après le chemin de la clé. Par exemple :

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

Ces deux arguments provoqueront un avertissement avant de supprimer les valeurs. Pour éviter cela, vous devez utiliser l'argument /f à la fin.

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

J'utilise la méthode suivante. Ceci fait partie d'un ripper MRU pour Windows XP, qui pourrait vous aider. C'est le texte d'un fichier batch, qui est exécuté à partir de CMD ou d'un raccourci. Il crée un fichier de registre en utilisant de simples redirections d'écho, puis l'importe.

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"

Je ne suis pas un codeur, je fais juste des trucs par lot pour moi-même, donc souvent je ne peux même pas lire ce que j'ai écrit, mais je l'utiliserais comme modèle pour faire autre chose.

Les echos sont redirigés (>) vers un fichier, avec le seul > pour la première redirection, et >> à ajouter au même fichier. Le signe - est utilisé pour supprimer une entrée de registre. Il serait sans doute bon de laisser la dernière ligne et de visualiser le fichier qu'il a créé avant de l'importer. L'importation peut se faire silencieusement, mais je ne le ferai pas moi-même.

Avertissement : Parce qu'une personne peut causer de sérieux dommages au système en supprimant des entrées de registre, une sauvegarde de l'image disque qui peut renvoyer le système lorsque le système échoue est nécessaire.

Les autorisations, les élévations et certaines entrées de registre ne permettront pas seulement à l'utilisateur de les détruire, sans définir les autorisations, en raison de leur importance.

Voici une partie “demandez à l'utilisateur”, ajoutée juste pour le plaisir.

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

J'utilise Windows 7 et voici ce que j'ai obtenu par 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, je pense que nous pouvons SUPPRIMER certaines clés ou MODIFIER certaines valeurs par cet algorithme :

  1. Exporter l'emplacement du registre des clés/valeurs que nous voulons supprimer/modifier dans un fichier (File01.reg).
  2. Editer/modifier la clé/valeur appropriée et la sauvegarder dans un nouveau fichier (File02.reg).
  3. Importer le fichier modifié (File02.reg) dans le registre Windows.

Référence au registre 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

Référence au registre 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

Les meilleures idées d'amélioration sont les bienvenues. :) :) :)