Wie füge ich eine mehrzeilige REG_SZ Zeichenfolge in der Registrierung von der Kommandozeile?

StackOverflow https://stackoverflow.com/questions/153879

  •  03-07-2019
  •  | 
  •  

Frage

Im Rahmen eines Build-Setup auf einem Windows-Rechner muß ich einen Registrierungseintrag hinzufügen, und ich möchte es von einer einfachen Batch-Datei tun.

Der Eintrag ist für einen Dritten app so das Format festgelegt ist.

Der Eintrag erfolgt in Form eines REG_SZ Zeichenfolge muss aber Zeilenumbrüche enthalten, dh. 0xOA Zeichen als Trennzeichen.

Ich habe ein paar Probleme getroffen.

Erster Versuch regedit ein generiertes REG-Datei zu laden, verwendet. Dies scheiterte, wie es schien nicht entweder entweder mit Zeilenumbrüchen lange Strings oder Strings zu mögen. Ich entdeckte, dass Export funktioniert Import fehlschlägt. Ich konnte den Export testen, wie der Dritter App direkt über die win32 api Ähnliche Einträge erstellt.

Zweiter Versuch verwendet den Befehl REG ADD, aber ich kann trotzdem nicht die Zeilenumbrüche alles, was ich gerade endet versuchen hinzuzufügen, finden mit einer Zeichenkette hinzugefügt werden.

War es hilfreich?

Lösung

Sie könnten eine VBScript (VBS) Datei erstellen und nur aus einer Batch-Datei aufrufen, Sie tun andere Dinge im Batch andere als diese Registrierungsänderung übernehmen. In Vbscript würde man etwas suchen, wie:

set WSHShell = CreateObject("WScript.Shell")  
WSHShell.RegWrite "HKEY_LOCAL_MACHINE\SOMEKEY", "value", "type"

Es sollte möglich sein, die möglichen Typen Werte mithilfe von Google zu finden.

Andere Tipps

Wenn Sie nicht an eine Skriptsprache beschränkt, man kann mit ihr in C # tun

Registry.CurrentUser.OpenSubKey(@"software\classes\something", true).SetValue("some key", "sometext\nothertext", RegistryValueKind.String);

Sie können mehrzeilige REG_SZ Strings importieren enthalten Wagenrücklauf (CR) und Zeilenvorschub (LF) end-of-line (EOL) bricht in die Registry-Dateien mit REGEN, solange Sie nichts dagegen haben, den Text als UTF-16LE übersetzen hexadezimal-Daten codiert. Um einen REG_SZ mit diesem Text zu importieren:

1st Line
2nd Line

Sie können eine Datei namens MULTILINETEXT.REG erstellen, die diese enthält:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Environment]
"MULTILINETEXT"=hex(1):31,00,73,00,74,00,20,00,4c,00,69,00,6e,00,65,00,0d,00,0a,00,\
32,00,6e,00,64,00,20,00,4c,00,69,00,6e,00,65,00,0d,00,0a,00,\
00,00

Um zu kodieren ASCII in UTF-16LE, einfach einen Null-Byte addiert nach jedem ASCII-Wert. REG_SZ Werte mit einem Null-Zeichen beenden müssen (,00,00) in UTF-16LE Notation.

Importieren Sie die Registrierungsänderung in der Batchdatei REG.EXE IMPORT MULTILINETEXT.REG.

Das Beispiel verwendet den Schlüssel Umgebung, weil es bequem ist, nicht weil es besonders nützlich ist, solche Daten zu Umgebungsvariablen hinzuzufügen. Man kann RegEdit verwenden, um sicherzustellen, dass die importierten REG_SZ Daten das CRLF-Zeichen enthalten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top