web-dev-qa-db-fra.com

Supprimer la clé de registre ou la valeur 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 Windows?

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

Dans le 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
]
17
Derek

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 entrées directement dans le fichier batch (.cmd).

25
Patrick Seymour

Comme décrit ici et ici par Microsoft sous "Supprimer les entrées de registre", vous pouvez supprimer une clé en plaçant un signe moins "-" devant un clé comme ça:

[-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 réellement.

15
Bruno Bieri

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

Vous pouvez faire quelque chose de semblable à 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 d'accès à la clé. Par exemple:

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

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

REG DELETE "HKEY_CURRENT_USER\SOFTWARE\SomeProgram" /f
4
Draganko

J'utilise la méthode suivante. Cela fait partie d'un MRU ripper pour Windows XP, qui pourrait aider. Ceci 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 à 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 en batch pour moi-même, alors 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 > unique pour la première redirection, et >> pour être ajouté au même fichier. Le signe - est utilisé pour supprimer une entrée de registre. Il serait probablement bon de ne pas utiliser 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.

Clause de non-responsabilité: une personne pouvant gravement endommager le système en supprimant les entrées de registre, une sauvegarde d'image de disque pouvant 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 "demander à 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
3
Psycogeek

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 vous souhaitez supprimer/modifier dans un fichier (File01.reg).
  2. Modifiez/modifiez la clé/valeur appropriée et enregistrez-la 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 intéressantes sont les bienvenues. :) :) :) :)

1
Rhak Kahr