48046
Goto Top

Schlüssel per Batch in Registry schreiben

Moin zusammen...


Weiß nicht ob mein erstes Posting veröffentlicht wurde, Browser blieb stehen. Naja, dann hier nochmal (falls doppelt, sorry)

Also ich möchte per BATCH folgende Schlüssel/Werte in die Registry schreiben:
(Abbild einer Exportierten Werte/Schlüssel in eine Regdatei)

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\AppEvents\Schemes\Apps\Wincmd]
@="Total Commander"

[HKEY_CURRENT_USER\AppEvents\Schemes\Apps\Wincmd\WincmdConnected]

[HKEY_CURRENT_USER\AppEvents\Schemes\Apps\Wincmd\WincmdConnected\.current]
@="C:\\Programme\\TotalCommander\\SOUND\\Verbunden (FTP).wav"

[HKEY_CURRENT_USER\AppEvents\Schemes\Apps\Wincmd\WincmdCopyComplete]

[HKEY_CURRENT_USER\AppEvents\Schemes\Apps\Wincmd\WincmdCopyComplete\.current]
@=""

[HKEY_CURRENT_USER\AppEvents\Schemes\Apps\Wincmd\WincmdDeleteComplete]

[HKEY_CURRENT_USER\AppEvents\Schemes\Apps\Wincmd\WincmdDeleteComplete\.current]
@="C:\\Programme\\TotalCommander\\SOUND\\Löschen komplett.wav"

[HKEY_CURRENT_USER\AppEvents\Schemes\Apps\Wincmd\WincmdPackComplete]

[HKEY_CURRENT_USER\AppEvents\Schemes\Apps\Wincmd\WincmdPackComplete\.current]
@="C:\\Programme\\TotalCommander\\SOUND\\Packen komplett.wav"

[HKEY_CURRENT_USER\AppEvents\Schemes\Apps\Wincmd\WincmdSearchComplete]

[HKEY_CURRENT_USER\AppEvents\Schemes\Apps\Wincmd\WincmdSearchComplete\.current]
@="C:\\Programme\\TotalCommander\\SOUND\\Suche komplett.wav"

[HKEY_CURRENT_USER\AppEvents\Schemes\Apps\Wincmd\WincmdTransferComplete]

[HKEY_CURRENT_USER\AppEvents\Schemes\Apps\Wincmd\WincmdTransferComplete\.current]
@="C:\\Programme\\TotalCommander\\SOUND\\Übertragung komplett.wav"

[HKEY_CURRENT_USER\AppEvents\Schemes\Apps\Wincmd\WincmdUnpackComplete]

[HKEY_CURRENT_USER\AppEvents\Schemes\Apps\Wincmd\WincmdUnpackComplete\.current]
@="C:\\Programme\\TotalCommander\\SOUND\\Entpacken komplett.wav"

Nun stehe ich vor zwei Problemen:

1.) Wie kann ich das per Batch realisieren?
2.) Das was jetzt noch als C:\Programme\TotalCommander als Pfadangabe gesetzt ist, MUß ich dann aber als Variable %COMMANDER_PATH% setzen. Ein normales Einsetzen der Variable in die Registry brachte leider keinen Erfolg. Daher vermute ich mal, das man die Variable zuerst in der Batch "entschlüsseln" muß um sie dann als Klartext; sprich normale Pfadangabe in die Registry schreiben zu lassen.

Tja, bin mal gespannt ob sich diese beiden Probleme lösen lassen...........bin aber guter Hoffnung face-smile


Gruß
ELMI

Content-Key: 59438

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

Ausgedruckt am: 29.03.2024 um 04:03 Uhr

Mitglied: cykes
cykes 21.05.2007, aktualisiert am 18.10.2012 um 18:31:57 Uhr
Goto Top
Hi,

benutze doch bitte erstmal die Forensuche, Suchbegriffe z.B. "Registry Batch". Dort findet sich z.B.
folgendes recht umfangreiches Beispiel:

Batch Zugriff auf Registry auslesen, auswerten, ändern, speichern.

Gruß

cykes
Mitglied: 48046
48046 21.05.2007 um 12:04:23 Uhr
Goto Top
Du wirst es nicht glauben, aber das hab ich auch schon gefunden. Nur nutzt mir das recht wenig, da ich von den meisten Befehlen die dort aufgeführt werden, keinerlei Ahnung habe. Zwangsläufig müßte es ja angepasst werden.

Außerdem wäre damit immer noch nicht das andere Problem mit der Variabelnauflösung in der Batch und das anschließende Schreiben wiederum als Klartext in die Registry gelöst.

Ich glaube ihr überschätzt die Kenntnisse mancher Fragesteller sehr. Wenn ich es mit den hier gefundenen Postings lösen hätte können, dann hätte ich sicherlich kein neues Posting aufgemacht!

Gruß
ELMI
Mitglied: SteinBeiser
SteinBeiser 21.05.2007 um 12:28:53 Uhr
Goto Top
erstens %COMMANDER_PATH% existiert nur wenn TotalCommander läuft und die cmd/batch aus dem TotalCommander aufgerufen wird.
"C:\\Programme\\TotalCommander" würde ich testweise mal durch %%COMMANDER_PATH%% ersetzen. getestet und geht NICHT.
grund %COMMANDER_PATH% ist nur innerhalb vom TotalCommander vorhanden.
lösung:
batch/cmd vom TotalCommander ausführen und per echo die .reg datei erzeugen mit %COMMANDER_PATH%\\Sound\usw.
diese .reg dann wie von "cykes" beschrieben mit "reg import dateiname" importieren.
Mitglied: cykes
cykes 21.05.2007 um 12:41:46 Uhr
Goto Top
Hi,

Du könntest alternativ, wenn die Schlüssel immer identisch sind, diese in eine .reg Datei exportieren,
diese dann auf die Rechner verteilen und mittels "reg import <REG-Datei>" auf der Kommandozeile importieren. Dürfte auch mit einer Server-Freigabe, in der die REG-Datei liegt funktionieren.

Gruß

cykes
Mitglied: 48046
48046 21.05.2007 um 12:44:54 Uhr
Goto Top
@SteinBeiser


Hab das mit den zusätzlichen % getestet, leider ohne Erfolg (TC lief).
Trotzdem Danke für Deine Hilfe face-smile


@cykes
Ja die Schlüssel/Werte bleiben immer gleich, nur der Pfad ändert sich. Dein Gedankenansatz ist nicht schlecht, hat was. Nur realisieren kann ich das leider selber nicht, da meine Batch-Kenntnisse nicht gerade in die Tiefe gehen. Schon garnicht was das Schreiben in die Registry betrifft. Wäre schön, wenn sich jemand findet, der mir da unter die Arme greift...


Gruß
ELMI
Mitglied: 36539
36539 21.05.2007 um 12:47:00 Uhr
Goto Top
Hallo,
wenn Du die datei.reg schon vorliegt, reicht dir dann nicht ein regedit /s datei.reg (Kommandozeile) zum wieder importieren?

gruß
onegasee59
Mitglied: 48046
48046 21.05.2007 um 12:52:09 Uhr
Goto Top
@36539

Ja, die Reg-Datei liegt im Prinzip vor, hab sie ja exportiert.

Wenn dieser von Dir gepostete Befehl ausreicht um die Reg-Datei zurückzuschreiben, wäre das schon mal die halbe Miete. Nur müssen die Pfadangaben ausgetauscht werden können. Wenn das noch klappen würde, wäre alles perfekt face-smile

Gruß
ELMI
Mitglied: 36539
36539 21.05.2007 um 12:57:38 Uhr
Goto Top
Hallo,
Ah sorry jetzt hab ich es verstanden.
Die *.reg ist ja ne im prinzip ne Textdatei:
Wenn es manuell reicht würde ich den betreffenden Pfad in der reg-Datei vorher per Rechtkslick auf "Bearbeiten" und nach öffnen über "Bearbeiten" - "Ersetzen" austauschen.

Ja und dann per Kommandozeile mit "regedit /s dateiname.reg" importieren.
oder per Batch wie schon geschrieben "reg import dateiname.reg"
registry bearbeiten per Befehl reg ... --> siehe in der Hilfe

gruß
onegasee59
Mitglied: 48046
48046 21.05.2007 um 13:03:27 Uhr
Goto Top
@36539

Klar, das wäre kein Problem. Aber dazu müsste ich dann bei jeder Installationsphase anwesend sein. Nein, es soll schon automatisch von der Batch erledigt werden.

Bräuchte also praktisch eine Befehlszeile, die in der Lage wäre, die zuvor exportierte Reg-Datei (im Prinzip ja jetzt eine txt) die Pfadangaben zu erkennen und entsprechend auszutauschen.

Dann könnte ich anschließend mit dem Befehl den Du schon vorgeschlagen hast (habs probiert, und geht prima) die Reg-Datei wieder zurück importieren face-smile


Gruß ELMI
Mitglied: SteinBeiser
SteinBeiser 21.05.2007 um 13:03:33 Uhr
Goto Top
batchdatei muss aber aus dem TotalCommander ausgeführt werden.
@echo off

echo Windows Registry Editor Version 5.00 >Test.reg
echo.  >>Test.reg
echo [HKEY_CURRENT_USER\AppEvents\Schemes\Apps\Wincmd] >>Test.reg
echo @="Total Commander" >>Test.reg  
echo.  >>Test.reg
echo [HKEY_CURRENT_USER\AppEvents\Schemes\Apps\Wincmd\WincmdConnected] >>Test.reg
echo.  >>Test.reg
echo [HKEY_CURRENT_USER\AppEvents\Schemes\Apps\Wincmd\WincmdConnected\.current] >>Test.reg
echo @="%COMMANDER_PATH:\=\\%\\SOUND\\Verbunden (FTP).wav" >>Test.reg  
echo.  >>Test.reg
echo [HKEY_CURRENT_USER\AppEvents\Schemes\Apps\Wincmd\WincmdCopyComplete] >>Test.reg
echo.  >>Test.reg
echo [HKEY_CURRENT_USER\AppEvents\Schemes\Apps\Wincmd\WincmdCopyComplete\.current] >>Test.reg
echo @="" >>Test.reg  
echo.  >>Test.reg
echo [HKEY_CURRENT_USER\AppEvents\Schemes\Apps\Wincmd\WincmdDeleteComplete] >>Test.reg
echo.  >>Test.reg
echo [HKEY_CURRENT_USER\AppEvents\Schemes\Apps\Wincmd\WincmdDeleteComplete\.current] >>Test.reg
echo @="%COMMANDER_PATH:\=\\%\\SOUND\\Löschen komplett.wav" >>Test.reg  
echo.  >>Test.reg
echo [HKEY_CURRENT_USER\AppEvents\Schemes\Apps\Wincmd\WincmdPackComplete] >>Test.reg
echo.  >>Test.reg
echo [HKEY_CURRENT_USER\AppEvents\Schemes\Apps\Wincmd\WincmdPackComplete\.current] >>Test.reg
echo @="%COMMANDER_PATH:\=\\%\\SOUND\\Packen komplett.wav" >>Test.reg  
echo.  >>Test.reg
echo [HKEY_CURRENT_USER\AppEvents\Schemes\Apps\Wincmd\WincmdSearchComplete] >>Test.reg
echo.  >>Test.reg
echo [HKEY_CURRENT_USER\AppEvents\Schemes\Apps\Wincmd\WincmdSearchComplete\.current] >>Test.reg
echo @="%COMMANDER_PATH:\=\\%\\SOUND\\Suche komplett.wav" >>Test.reg  
echo.  >>Test.reg
echo [HKEY_CURRENT_USER\AppEvents\Schemes\Apps\Wincmd\WincmdTransferComplete] >>Test.reg
echo.  >>Test.reg
echo [HKEY_CURRENT_USER\AppEvents\Schemes\Apps\Wincmd\WincmdTransferComplete\.current] >>Test.reg
echo @="%COMMANDER_PATH:\=\\%\\SOUND\\Übertragung komplett.wav" >>Test.reg  
echo.  >>Test.reg
echo [HKEY_CURRENT_USER\AppEvents\Schemes\Apps\Wincmd\WincmdUnpackComplete] >>Test.reg
echo.  >>Test.reg
echo [HKEY_CURRENT_USER\AppEvents\Schemes\Apps\Wincmd\WincmdUnpackComplete\.current] >>Test.reg
echo @="%COMMANDER_PATH:\=\\%\\SOUND\\Entpacken komplett.wav" >>Test.reg  
echo.  >>Test.reg

reg import Test.reg
del Test.reg
Mitglied: 36539
36539 21.05.2007 um 13:14:38 Uhr
Goto Top
Hallo,
"Stringaustausch" automatisch geht sicher auch in der Batch (über findstr) aber
1.
hat SteinBeiser ja schon eine Lösung geschrieben
2.
bin ich da ehrlich gesagt überfragt wie man das Ganze dann in einer Batch über mehrere Zeilen hinweg umsetzen kann.

Aber die Profis hier finden da sicher auch eine Lösung.

[edit]
eben gefunden so ähnlich muss das gehen Batch Textersetzen mit Dateiname
[/edit]

gruß
onegasee59
Mitglied: 48046
48046 21.05.2007 um 13:52:15 Uhr
Goto Top
@SteinBeiser

Genial, Dein Script funktioniert super, hurra face-smile

@all
Ich möchte mich nochmal bei allen bedanken die versucht haben mir zu helfen. Auch wenn es aus eurer Sicht evtl. teilweise nerven sollte wenn "Dummy" Fragen von Newbies auf diesem Gebiet zum x'ten Mal gefragt werden. Es ist nun mal einfach so, dass wenn man recht wenig Hintergrundwissen von Batch-Scripten hat, man halt fast das ganze Script vorgekaut bekommen muß.

Ich für meinen Teil hätte vieles sonst hier nicht realisieren können, das Board hier hat mir sehr geholfen!!!


Deswegen an all diejenigen von Euch, die dabei immer die Nerven behalten und den Leuten trotzdem hilfreich unter die Arme greifen (auch wenn das ein oder andere schon mal in abgewandelter Form behandelt wurde), meinen Respekt, wirklich.

Gruß ELMI