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

18

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

Premièrement, est-ce même possible, et deuxièmement (si ce n'est pas possible), pourrais-je créer un .regfichier et l'exécuter à partir du .cmdfichier?

Depuis le .cmdscript, 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 .regfichier:

Windows Registry Editor Version 5.00
[
-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
]
Derek
la source
1
en utilisant un fichier .reg, même à partir d'un lecteur réseau devrait fonctionner correctement. Si ce n'est pas le cas, je m'attends à ce que cela soit dû à l'UAC ou à d'autres mesures de sécurité.
William Hilsum

Réponses:

26

Je recommanderais 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 saisies directement dans le .cmdfichier batch ( ).

Patrick Seymour
la source
15

Comme décrit ici et ici par Microsoft sous «Suppression des entrées de registre», vous pouvez supprimer une clé en plaçant un «-» devant une clé comme celle-ci:

[-HKEY_LOCAL_MACHINE\SOFTWARE\YourSoft\MyKey]

Et pour supprimer une entrée , placez un moins "-" après le caractère = comme ça:

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

Remarque: ce ne sont que des exemples de clés. Ils ne fonctionneront pas vraiment.

Bruno Bieri
la source
En effet, cela fonctionne.
Peter Mortensen
@Peter Mortensen C'est encore une référence plus officielle. Merci pour le partage.
Bruno Bieri
Ironiquement, ce lien de support Microsoft donne actuellement "Erreur de serveur dans l'application '/ app / content'".
sdjuan
@sdjuan le lien de support Microsoft fonctionne à nouveau.
Bruno Bieri
4

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 /v "EntryName"argument après le chemin d'accès à la clé. Par exemple:

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

Les deux entraîneront un avertissement avant de supprimer les valeurs. Pour éviter cela, vous devez utiliser l' /fargument à la fin.

REG DELETE "HKEY_CURRENT_USER\SOFTWARE\SomeProgram" /f
Marko Vejnovic
la source
Je vous remercie. Le seul endroit sur le net que j'ai pu trouver qui fait référence à une sous-clé.
square_eyes
3

J'utilise la méthode suivante. Cela fait partie d'un ripper MRU pour Windows XP, qui pourrait vous aider. Il s'agit du texte d'un fichier de commandes, exécuté à partir de CMD ou d'un raccourci. Il crée un fichier de registre à l'aide 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 lots pour moi, 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.

Ils echossont redirigés ( >) vers un fichier, avec le single >pour la première redirection, et >>à ajouter au même fichier. Le -signe est utilisé pour supprimer une entrée de registre. Il serait probablement bon de laisser la dernière ligne et d'afficher le fichier créé avant l'importation. L'importation peut se faire en silence, mais je ne le ferai pas moi-même.

Avertissement: Étant donné qu'une personne peut endommager gravement le système en supprimant les entrées de registre, une sauvegarde d'image disque qui peut renvoyer le système en cas de défaillance du système est nécessaire.

Les autorisations appropriées, les élévations et certaines entrées du 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
Psycogeek
la source
1
sur Vista +, cette méthode invoquera l'UAC. et l'utilisateur devra accepter ou refuser cette action. L'exécution du script en tant qu'administrateur contournera cela cependant
Piotr Kula
1
vous ne devez pas utiliser% USERPROFILE% \ Local Settings \ Temp, mais% TMP%. l'ancien ne fonctionne que sur les systèmes anglais
kinokijuf
@kinokijuf Feexed, semble beaucoup plus agréable de cette façon aussi. Il a probablement été configuré comme ça pour le garder sur le disque système pour moi, car j'ai parfois envoyé Temps sur un disque virtuel ou sur des disques de données.
Psycogeek
1

J'utilise Windows 7 et voici ce que j'ai obtenu via 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. Exportez l'emplacement du registre des clés / valeurs que nous voulons supprimer / modifier dans un fichier (File01.reg).
  2. Éditez / modifiez la clé / valeur appropriée et enregistrez-le dans un nouveau fichier (File02.reg).
  3. Importez ce 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

Des idées d'amélioration plus brillantes sont les bienvenues. :) :) :)

Rhak Kahr
la source