it-swarm.com.de

Wie ändere ich die Daten eines vorhandenen Registrierungsschlüsselwertnamens von cmd?

Wie ändere ich einen vorhandenen Registrierungsschlüsselwert von cmd?

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

Ich bin nicht an einer Skript-/Stapelautomatisierung interessiert, zumindest nicht jetzt. Ich möchte nur eine einfache Bearbeitung der Registrierung über den Befehl cmd Reg. Ohne dass Sie einen Schlüssel zerstören müssen, um ihn eine Sekunde später mit einigen zusätzlichen Daten hinzuzufügen. Die gleiche Art von Operation, die Sie in Regedit ausführen können.

Hier ist ein Beispiel, mit dem Sie den Denkprozess vorantreiben können.

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

Jetzt ist dies in Ordnung, aber was ist, wenn ich die Wertedaten von "wahr" auf "falsch" ändern muss. Damit ich das stattdessen 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 gerade klar geworden, dass das obige Beispiel einfach zu einfach gewesen sein könnte ...

Im obigen Beispiel kann ich einfach Folgendes tun:

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 vollständig zu löschen und ihn dann erneut hinzuzufügen, da die darin enthaltenen Daten sehr klein sind. Es ist nur eine Zeichenfolge wie "wahr" oder "falsch". Das ist nicht allzu schwer nachzubauen.

Hier ist ein schwierigeres 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. Insbesondere möchte ich nur den letzten Suchpfad, C:\Programme (x86)\Notepad ++, entfernen.

Wie packst du das an ?? ...

Du erwartest nicht, dass ich das alles noch einmal tippe ?? ......

19
Samir

Verwenden Sie REG ADD mit dem Parameter "/ f", um das Überschreiben zu erzwingen.

REG ADD /? erklärt 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 "\0" as the separator
/d          The data to assign to the registry ValueName being added
/f          Force overwriting the existing registry entry without Prompt

Verwenden Sie einen Befehl wie den folgenden, um einen neuen Wert einzufügen oder einen Zeichenfolgenwert von "false" in "true" umzuschalten:

reg add HKCU\Software\Citrix\Receiver /t REG_SZ /v UpgradeDone /d true /f

Beispiel, das einen vorhandenen Wert liest und einen String anfügt, bevor er zurückgeschrieben wird:

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

Hinweis: In diesem Beispiel wird davon ausgegangen, dass der alte Wert und der neue Wert keine Leerzeichen enthalten. Andernfalls muss man Anführungszeichen hinzufügen und den Parameter "Token" ändern. Zusätzliche Fehlerprüfung aus Gründen der Kürze weggelassen. all Registrierungs-Manipulationscode muss jedoch auf jeden Fall eine angemessene Fehlerprüfung durchführen.

36
Axel Kemper

Sie können auch REG import foo.reg eingeben, wobei foo.reg eine Datei mit den üblichen Registrierungsinformationen ist, die Sie aus regedit.exe exportieren möchten.

In Ihrem Beispiel wäre dies so etwas wie:

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 .

2
Andy Terra