2013-06-14 09:06:20 +0000 2013-06-14 09:06:20 +0000
21
21

Comment modifier les données d'une valeur de clé de registre existante à partir de cmd ?

Comment modifier une valeur de clé de registre existante à partir de cmd ?

Il existe un grand nombre d'options et de commutateurs, de cloches et de sifflets, pour la commande Reg. Il existe des options pour interroger, ajouter et supprimer des clés, sous-clés et noms de valeurs. Mais comment modifier les données d'un nom de valeur existant ? Supprimez-vous complètement le nom de la valeur, puis l'ajoutez-vous à nouveau et retapez la valeur/les données modifiées ? Cela semble très compliqué…

Je ne suis pas intéressé par l'automatisation des scripts/lots, du moins pas maintenant, je veux juste une édition simple du registre par la commande cmd Reg. Sans avoir besoin de détruire une clé juste pour l'ajouter une seconde plus tard avec quelques données supplémentaires. Le même genre d'opération que vous pouvez faire dans Regedit.

Voici un exemple pour vous aider à stimuler le processus de réflexion.

Key: HKEY_CURRENT_USER\Software\Citrix\Receiver
Value type: reg_sz
Value name: UpgradeDone
Value data: true

Maintenant, celui-ci est très bien, mais que faire si je dois changer les données de valeur de “true” à “false”. Pour que j'obtienne à la place ceci :

Key: HKEY_CURRENT_USER\Software\Citrix\Receiver
Value type: reg_sz
Value name: UpgradeDone
Value data: false

Quelles sont les options et la syntaxe pour faire cela à partir de cmd ?….

Mise à jour:

Je viens de réaliser que l'exemple ci-dessus était peut-être trop facile. …

Dans l'exemple ci-dessus, je peux simplement faire ce qui suit :

reg delete HKEY_CURRENT_USER\Software\Citrix\Receiver /v UpgradeDone

reg add HKEY_CURRENT_USER\Software\Citrix\Receiver /v UpgradeDone /t Reg_Sz /d false

Je peux me permettre de supprimer complètement la valeur, puis de l'ajouter à nouveau, parce que les données qu'elle contient sont très petites. C'est juste une chaîne de caractères comme “true” ou “false”. Ce n'est pas trop difficile à recréer.

Voici un exemple plus difficile avec plus de contenu de données :

Key: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
Value name: Path
Value type: Reg_Sz
Data: C:\Program Files (x86)\ImageMagick-6.8.5-Q16;C:\PROGRA~2\GTK2-R~1\bin;C:\Program Files (x86)\AMD APP\bin\x86_64;C:\Program Files (x86)\AMD APP\bin\x86;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Program Files (x86)\ATI Technologies\ATI.ACE\Core-Static;C:\Program Files (x86)\Common Files\Acronis\SnapAPI\;C:\Windows\System32\WindowsPowerShell\v1.0\;"C:\Program Files (x86)\WinHasher";C:\Program Files (x86)\Android\android-sdk\tools\;C:\Program Files (x86)\Android\android-sdk\platform-tools\;C:\Program Files (x86)\GTK2-Runtime\bin;C:\Program Files (x86)\MiKTeX 2.9\miktex\bin\;C:\Program Files (x86)\Common Files\Teleca Shared;C:\Program Files (x86)\Notepad++

Je veux supprimer seulement une partie du contenu des données. Plus précisément, je ne veux supprimer que le dernier chemin de recherche, le C:\Program Files (x86)\Notepad++.

Comment vous y prendre ? ….

Vous ne vous attendez pas à ce que je retape tout cela ? ……

Réponses (2)

38
38
38
2013-06-14 09:27:30 +0000

Utilisez REG ADD avec le paramètre “/f” pour forcer l'écrasement.

REG ADD /? explique les paramètres. Pour insérer une nouvelle valeur ou faire passer une chaîne de caractères de “false” à “true”, utilisez une commande comme celle-ci :

REG ADD KeyName [/v ValueName | /ve] [/t type] [/s Separator] [/d Data] [/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
/v The value name, under the selected Key, to add
/ve adds an empty value name <no name> for the key
/t RegKey data types
            [ REG_SZ | REG_MULTI_SZ | REG_DWORD_BIG_ENDIAN | REG_DWORD | 
              REG_BINARY | REG_DWORD_LITTLE_ENDIAN | REG_NONE | REG_EXPAND_SZ ]
            If omitted, REG_SZ is assumed
/s Specify one character that you use as the separator in your data 
            string for REG_MULTI_SZ. If omitted, use "```
reg add HKCU\Software\Citrix\Receiver /t REG_SZ /v UpgradeDone /d true /f
```" as the separator
/d The data to assign to the registry ValueName being added
/f Force overwriting the existing registry entry without prompt

Exemple qui lit une valeur existante et ajoute une chaîne de caractères avant de la réécrire :

set append=XXXXXX
set key=HKCU\Software\myTest
set value=myValue
set oldVal=

for /F "skip=2 tokens=3" %%r in ('reg query %key% /v %value%') do set oldVal=%%r
echo previous=%oldVal%

set newVal=%oldVal%%append% 

reg add %key% /v %value% /d %newVal% /f

Note: Cet exemple suppose que l'ancienne valeur et la nouvelle valeur n'ont pas de blancs. Dans le cas contraire, il faut ajouter des guillemets et modifier le paramètre “tokens”. Vérification d'erreur supplémentaire omise par souci de concision. Cependant, tous les codes de manipulation du registre doivent absolument faire l'objet d'une vérification d'erreur adéquate.

2
2
2
2015-04-13 23:01:03 +0000

Vous pouvez aussi REG import foo.reg dans lequel foo.reg est un fichier contenant les informations de registre habituelles que vous exporteriez de regedit.exe.

Dans votre exemple, ce serait quelque chose comme :

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment]
"Path"="C:\Program Files (x86)\ImageMagick-6.8.5-Q16;C:\PROGRA~2\GTK2-R~1\bin;C:\Program Files (x86)\AMD APP\bin\x86_64;C:\Program Files (x86)\AMD APP\bin\x86;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Program Files (x86)\ATI Technologies\ATI.ACE\Core-Static;C:\Program Files (x86)\Common Files\Acronis\SnapAPI\;C:\Windows\System32\WindowsPowerShell\v1.0\;"C:\Program Files (x86)\WinHasher";C:\Program Files (x86)\Android\android-sdk\tools\;C:\Program Files (x86)\Android\android-sdk\platform-tools\;C:\Program Files (x86)\GTK2-Runtime\bin;C:\Program Files (x86)\MiKTeX 2.9\miktex\bin\;C:\Program Files (x86)\Common Files\Teleca Shared;C:\Program Files (x86)\Notepad++"

Plus d'informations disponibles sur cet article de Microsoft Technet .