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

Wie ändere ich die Daten eines vorhandenen Registrierungsschlüssel-Wertnamens aus cmd?

Wie ändere ich einen vorhandenen Registrierungsschlüssel-Wert aus cmd?

Für den Befehl Reg gibt es viele Optionen und Schalter, Schnickschnack und Pfeifen. Es gibt Optionen zum Abfragen, Hinzufügen und Löschen von Schlüsseln, Unterschlüsseln und Wertnamen. Aber wie ändert man die Daten eines bestehenden Wertnamens? Entfernen Sie den Wertnamen vollständig, fügen ihn dann wieder hinzu und geben den geänderten Wert/die geänderten Daten erneut ein? Das scheint sehr umständlich zu sein…

Ich bin an keiner Skript-/Batch-Automatisierung interessiert, zumindest jetzt nicht, ich möchte nur eine einfache Bearbeitung der Registrierung mit dem Befehl cmd Reg. Ohne die Notwendigkeit, einen Schlüssel zu zerstören, nur um ihn eine Sekunde später mit einigen zusätzlichen Daten hinzuzufügen. Die gleiche Art von Operation, die Sie in Regedit.

durchführen können.

Hier ist ein Beispiel, um den Denkprozess anzuregen.

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

Nun, dieses hier ist ganz in Ordnung, aber was ist, wenn ich die Wertdaten von “wahr” in “falsch” ändern muss. Damit ich stattdessen Folgendes bekomme:

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

Was sind die Optionen und die Syntax, um das von cmd aus zu tun?…..

Update:

Mir ist jetzt erst klar geworden, dass das obige Beispiel vielleicht einfach zu einfach gewesen wäre. …

Im obigen Beispiel kann ich einfach folgendes machen:

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

Ich kann es mir leisten, den Wert komplett zu löschen und dann wieder hinzuzufügen, weil die darin enthaltenen Daten sehr klein sind. Es ist nur eine Zeichenfolge wie “wahr” oder “falsch”. Das ist nicht allzu schwer neu zu erstellen.

Hier ist ein härteres Beispiel mit mehr Dateninhalt:

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

Ich möchte nur Teile des Dateninhalts entfernen. Konkret möchte ich nur den letzten Suchpfad entfernen, den C:\Program Files (x86)\Notepad++.

Wie gehen Sie das an??….

Sie erwarten doch nicht, dass ich das alles noch einmal eintippe??…….

Antworten (2)

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

Verwenden Sie REG ADD mit dem “/f”-Parameter, um ein Überschreiben zu erzwingen.

REG ADD /? erläutert die Parameter.

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

Um einen neuen Wert einzufügen oder einen Zeichenkettenwert von “falsch” auf “wahr” umzuschalten, verwenden Sie einen Befehl wie den folgenden:

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

Beispiel, das einen vorhandenen Wert liest und eine Zeichenkette anhängt, bevor es zurückgeschrieben wird:

&001

Anmerkung: Dieses Beispiel geht davon aus, dass der alte Wert und der neue Wert keine Leerzeichen enthalten. Andernfalls muss man Anführungszeichen hinzufügen und den Parameter “tokens” ändern. Auf eine zusätzliche Fehlerprüfung wurde aus Gründen der Kürze verzichtet. Allerdings muss alle Registry-Manipulationscodes unbedingt eine angemessene Fehlerprüfung durchführen.

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

Sie können auch REG import foo.reg verwenden, wobei foo.reg eine Datei mit den üblichen Registrierungsinformationen ist, wie Sie sie aus regedit.exe exportieren würden.

In Ihrem Beispiel wäre dies etwa so:

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

Weitere Informationen finden Sie unter diesem Microsoft Technet-Artikel .