blowdow
Goto Top

Per cmd einzelner Registry-String exportieren

Hallo zusammen

Mit folgendem cmd-Befehl kann ich einen "Stamm" in der Registry exportieren:

REGEDIT /E C:\Filename.REG "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main"

Soweit klappt das wunderbar.

Gerne möchte ich aber nur die Startseite des Internet-Explorers exportieren. Dieser String-Schlüssel ist in diesem Stamm mit dem Namen "Start Page".

Wie kann ich nur diesen String (Start Page) unter (HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\) exportieren?

Grüse
blowdow

Content-Key: 212755

Url: https://administrator.de/contentid/212755

Printed on: April 18, 2024 at 17:04 o'clock

Member: colinardo
colinardo Jul 29, 2013 updated at 10:16:16 (UTC)
Goto Top
Hallo blowdow,
einzelnes auslesen:
reg query "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main" /v "Start Page"
das ganze kannst du dann per Batch zerpflücken...und dann wieder zu einer *.reg-Datei zusammensetzen.
z.B. so:
@echo off & setlocal ENABLEDELAYEDEXPANSION
set "regexportfile=C:\test.reg"  
set counter=1
for /f "tokens=* delims=" %%k in ('reg query "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main" /v "Start Page"') DO @(set keyline=^[%%k^] & goto :next)  
:next
for /f "skip=1 tokens=1,2,4*" %%k in ('reg query "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main" /v "Start Page"') DO @(set valueline="%%k %%l"="%%m")  

echo Windows Registry Editor Version 5.00 >!regexportfile!
echo. >>!regexportfile!
echo !keyline! >>!regexportfile!
echo !valueline! >>!regexportfile!

oder direkt effektiver via Powershell auslesen:
Get-ItemProperty -Path "HKCU:\Software\Microsoft\Internet Explorer\Main" -Name "Start Page"| select -ExpandProperty "Start Page"

Grüße Uwe
Gelöste Beitrage bitte auch als solche markieren.Danke.
Member: blowdow
blowdow Jul 29, 2013 at 12:21:34 (UTC)
Goto Top
Hi Uwe

Herzlichen Dank für deine schnelle Hilfe! Ich konnte deinen langen Code perfekt verwenden.

Ich habe soeben gesehen, dass bei mehreren Startseiten (z.B. 4 Stück) ein neuer Schlüssel im der Registry erstellt wird. Dieser heisst "Secondary Start Page". Dort sind jeweils alle anderen Startseiten enthalten (untereinander aufgelistet). Könnte man für diese Sicherung auch deinen langen Code verwenden? Sprich, mit wenig Änderungen?

Ehrlich gesagt tue ich mich ziemlich schwer, in Sachen "delims", "tokens" usw... face-sad

Grüsse
Member: colinardo
colinardo Jul 29, 2013 updated at 14:24:29 (UTC)
Goto Top
Leider ist der Eintrag ein "REG_MULTI_SZ" der in der REG-Datei für einen Export in HEX-Werten gespeichert werden muss. D.h. der Aufwand nur für diesen Eintrag wäre enorm.
Ich würde die Werte mit REG QUERY auslesen und in einer anderen Form als einer REG-Datei speichern und dann mit einem Import Script in die Ziel-Registrierung eintragen (REG ADD)
Member: blowdow
blowdow Jul 29, 2013 at 14:52:13 (UTC)
Goto Top
Ich werde mal versuchen, ob ich das hinkriege. Du hast mir aber soweit super weiterhelfen können.

Besten Dank und schönen Abend noch

blowdow
Member: Endoro
Endoro Jul 29, 2013 at 16:39:56 (UTC)
Goto Top
Hallo,
man könnte es auch so machen.
 reg export "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main" test.reg  
Damit wird der gesamte Schlüssel in einer reg gesichert.
Was zuviel ist, kann gelöscht werden.
lg
Member: colinardo
colinardo Jul 29, 2013 updated at 18:38:02 (UTC)
Goto Top
Als Nachtrag für dich hier noch ein Script was dir bei deinem Vorhaben vieleicht hilft:
(Erläuterungen weiter unten)
@echo off & setlocal ENABLEDELAYEDEXPANSION
set option=%~1
set "regsettings=%~2"  

if "%option%" neq "" (  
	if "%regsettings%" neq "" (  
		if /i "%option%" == "export" goto :EXPORT  
		if /i "%option%" == "import" goto :IMPORT  
	)
)
echo Fehlender oder falscher Parameter
echo   (Beispiel: startpage export^|import "C:\test_settings.txt")  
goto :EOF


:EXPORT
for /f "skip=1 tokens=4*" %%k in ('reg query "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main" /v "Start Page"') DO @(set firstpage="StartPage"="%%k")  
for /f "skip=1 tokens=5*" %%k in ('reg query "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main" /v "Secondary Start Pages" 2^>nul') DO @(set nextpages="SecondaryPages"=%%k)  
echo !firstpage! >!regsettings!
if "!nextpages!" neq "" ( echo !nextpages! >>!regsettings!)  
goto :EOF


:IMPORT
for /f "tokens=2* delims==" %%k in ('findstr "StartPage" "%regsettings%" 2^>nul') DO @(  
	reg add "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main" /f /v "Start Page" /d %%k  
)
for /f "tokens=2* delims==" %%k in ('findstr "SecondaryPages" "%regsettings%" 2^>nul') DO @(  
	reg add "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main" /f /v "Secondary Start Pages" /t REG_MULTI_SZ /d %%k  
)
goto :EOF
Dieses Script speicherst du Dir z.B. als startpage.cmd und rufst es dann folgendermaßen auf:

zum Exportieren der Einstellungen in eine Datei:
startpage.cmd export "C:\settings.txt"

zum Importieren der Einstellungen aus der Datei:
startpage.cmd import "C:\settings.txt"

face-wink Uwe
Member: blowdow
blowdow Jul 30, 2013 at 07:27:03 (UTC)
Goto Top
Heeee Uwe

Das wird ja immer besser. Dein 31-Zeiler funktioniert auf Anhieb genau nach meinen Wünschen face-wink

Wirklich sehr nett von dir! Grosses DANKESCHÖN!

@endroro. Dir natürlich auch Mercischön! Theoretisch hätte ich genau alles nach deinem Code umsetzen können. Da aber von Win Vista zu Win7 alles importiert/exportiert wird, möchte ich nicht komplette "Registry-Stämme" kopieren (Kompatibilitäts-Problem??)

Gruss
Blowdow