Verwendung des Batch-Befehls REG für Werte vom Typ REG-EXPAND-SZ
Hallo zusammen,
ich mal eine Grundsatzfrage zur Verwendung des REG-Befehls.
Ich gehe von folgendem Registryeintrag aus:
Wenn ich den exportiere, bekomme ich folgendes Eregbnis:
Daraus mache ich jetzt eine Batch-Datei:
Aber wenn ich den importiere, bekomme ich nicht den Ausgangswert, sondern folgendes:
Wie muss ich das also in die Batch-Datei schreiben, um es richtig in die Registry zu schreiben? Und zwar mit REG ADD, nicht indem ich eine .reg-Datei importiere.
Danke im Voraus,
Sarek \\//_
ich mal eine Grundsatzfrage zur Verwendung des REG-Befehls.
Ich gehe von folgendem Registryeintrag aus:
Wenn ich den exportiere, bekomme ich folgendes Eregbnis:
Daraus mache ich jetzt eine Batch-Datei:
1
reg add HKCR\CLSID\TEST /f /ve /t REG_EXPAND_SZ /d hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,69,00,6d,00,61,00,67,00,65,00,72,00,65,00,73,00,2e,00,64,00,6c,00,6c,00,2c,00,2d,00,31,00,30,00,34,00,33,00,00,00
Aber wenn ich den importiere, bekomme ich nicht den Ausgangswert, sondern folgendes:
Wie muss ich das also in die Batch-Datei schreiben, um es richtig in die Registry zu schreiben? Und zwar mit REG ADD, nicht indem ich eine .reg-Datei importiere.
Danke im Voraus,
Sarek \\//_
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 387950
Url: https://administrator.de/forum/verwendung-des-batch-befehls-reg-fuer-werte-vom-typ-reg-expand-sz-387950.html
Ausgedruckt am: 02.04.2025 um 01:04 Uhr
7 Kommentare
Neuester Kommentar

So:
Binary Werte kannst du mit reg add nur mit dem Typ REG_BINARY schreiben, aber dazu dürfen dort dann nur die reinen Hex-Ziffern stehen ohne Kommata zusammengeschrieben und ohne das "Hex()". Aber dann ist der Wert nicht mehr vom Typ REG_EXPAND_SZ! Du musst also die 2 Byte Hex-Werte erst in einen Plaintext-String wandeln und eventuelle Umgebungsvariablen per ^ escapen und dann wie oben als REG_EXPAND_SZ schreiben.
Solche Hex-Daten kannst du per Powershell schnell in den dazugehörigen Text umwandeln:
Gruß speedlink
1
reg add HKCR\CLSID\TEST /ve /f /t REG_EXPAND_SZ /d ^%systemroot^%\system32\imageres.dll,-1043
Binary Werte kannst du mit reg add nur mit dem Typ REG_BINARY schreiben, aber dazu dürfen dort dann nur die reinen Hex-Ziffern stehen ohne Kommata zusammengeschrieben und ohne das "Hex()". Aber dann ist der Wert nicht mehr vom Typ REG_EXPAND_SZ! Du musst also die 2 Byte Hex-Werte erst in einen Plaintext-String wandeln und eventuelle Umgebungsvariablen per ^ escapen und dann wie oben als REG_EXPAND_SZ schreiben.
Solche Hex-Daten kannst du per Powershell schnell in den dazugehörigen Text umwandeln:
1
2
2
$data = '25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,69,00,6d,00,61,00,67,00,65,00,72,00,65,00,73,00,2e,00,64,00,6c,00,6c,00,2c,00,2d,00,31,00,30,00,34,00,33,00,00,00'
([regex]::Matches($data.replace(',',''),'(.{2})(.{2})').Captures | %{[char][convert]::ToInt32("$($_.Groups[2].Value)$($_.Groups[1].Value)",16)}) -join ''
Gruß speedlink

Nö. Der Befehl ist für die direkte Eingabe in die Konsole:
Wenn du das natürlich in eine BATCHDATEI schreibst und damit ausführst musst du die Umgebungsvariable mit doppelten Prozentzeichen schreiben!
Wenn du das natürlich in eine BATCHDATEI schreibst und damit ausführst musst du die Umgebungsvariable mit doppelten Prozentzeichen schreiben!
1
2
2
@echo off
reg add HKCR\CLSID\TEST /ve /f /t REG_EXPAND_SZ /d "%%systemroot%%\system32\imageres.dll,-1043"

Zitat von @SarekHL:
Warum haben die DOS-Erfinder das denn bloß so komisch konstruiert, dass man in einer Batchdatei Befehle anders angeben bis als in der Konsole
Nun ja ist ja auch schon eine Sprache aus dem letzten Jahrhundert :-P. Solle man endgültig mal abschneiden den alten Zopf. Ob das aber mit Winblows irgendwann mal passiert wage ich zu bezweifeln... Bis dahin ist Winblows hoffentlich schon in der Versenkung verschwunden, es gibt ja genügend Alternativen.Warum haben die DOS-Erfinder das denn bloß so komisch konstruiert, dass man in einer Batchdatei Befehle anders angeben bis als in der Konsole

Ein Trugschluss, genau so viele Systeme blocken auch die.
), aber das ist ein anderes Thema. Wenn ich vollkommene Unabhängigkeit will nehme ich lieber gleich ne Exe mit Betriebsystemfunktionen auf LowLevel Basis ohne Abhängigkeiten. Aber selbst die kann ein OS nicht zulassen (Applocker &Co.)
PowerShell-Scripte sind auf vielen Systemen per Default daktiviert ....
Was sich simpelst umgehen lässt (denn sie wissen nicht was sie tun