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

Hoe wijzig ik de gegevens van een bestaande registersleutelnaam van cmd?

Hoe wijzig ik een bestaande registersleutelwaarde van cmd?

Er zijn veel opties en schakelaars, bellen en fluitjes, voor het Reg commando. Er zijn opties voor het opvragen, toevoegen en verwijderen van sleutels, subtoetsen en waarden. Maar hoe pas je de gegevens van een bestaande waarde aan? Verwijdert u de naam van de waarde volledig, voegt u deze opnieuw toe en typt u de gewijzigde waarde/gegevens opnieuw in? Dat lijkt erg omslachtig…

Ik ben niet geïnteresseerd in enige script/batch automatisering, tenminste niet nu, ik wil gewoon eenvoudige registerbewerking via cmd Reg commando. Zonder de noodzaak om een sleutel te vernietigen, alleen maar om deze een seconde later toe te voegen met wat extra gegevens. Dezelfde soort bewerking die je kunt doen in Regedit.

Hier is een voorbeeld voor je om het denkproces te stimuleren.

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

Nu is deze prima, maar wat als ik de waarde gegevens moet veranderen van “true” naar “false”. Zodat ik dit in plaats daarvan krijg:

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

Wat zijn de opties en de syntaxis om dat te doen van cmd?…

Update:

Ik realiseer me nu net dat het bovenstaande voorbeeld misschien gewoon te gemakkelijk was. …

In het bovenstaande voorbeeld kan ik gewoon het volgende doen:

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

Ik kan me veroorloven de waarde volledig te verwijderen, en dan weer toe te voegen, omdat de gegevens die erin zitten erg klein zijn. Het is gewoon een string als “true” of “false”. Dat is niet te moeilijk om opnieuw te maken.

Hier is een harder voorbeeld met meer data inhoud:

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++

Ik wil alleen delen van de data inhoud verwijderen. Specifiek, ik wil alleen het laatste zoekpad verwijderen, de C:\Program Files (x86)\Notepad++.

Hoe pak je dit aan??…

Je verwacht toch niet dat ik dit allemaal opnieuw ga typen??……

Antwoorden (2)

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

Gebruik REG ADD met de “/f” parameter om overschrijven te forceren.

REG ADD /? legt de parameters uit.

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

Om een nieuwe waarde in te voegen of een stringwaarde van “false” naar “true” te schakelen, gebruik je een commando als dit:

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

Voorbeeld dat een bestaande waarde leest en een string toevoegt voordat je het terug schrijft:

&001

Aanwijzing: Dit voorbeeld neemt aan dat de oude waarde en de nieuwe waarde geen spaties hebben. Anders moet men aanhalingstekens toevoegen en de “tokens” parameter wijzigen. Extra foutcontrole weggelaten voor beknoptheid. Echter, alle register manipulerende code moet zeker voldoende foutcontrole doen.

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

U kunt REG import foo.reg ook gebruiken als bestand waarin foo.reg een bestand is met de gebruikelijke registerinformatie zoals u die zou exporteren van regedit.exe.

In uw voorbeeld zou dit iets zijn als:

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++"

Meer informatie is beschikbaar op dit Microsoft Technet artikel .