kafri84
Goto Top

Registry Key auslesen, ändern und wieder einfügen

Hallo zusammen,

nachdem ich über die Suche nichts richtiges gefunden habe, muss ich mein Problem hier schildern.
Vorneweg sei gesagt, dass ich auf diesem Gebiet Anfänger bin...

Ich möchte mit einem Script einen bestimmten Wert eines Reg-Key bearbeiten.
Und zwar habe unter HKLM\Software\Microsoft\Windows\CurrentVersion einen Eintrag der sich DevicePath nennt.
Dort sind viele Pfadangaben hinterlegt. Der Wert des Eintrags sieht dann ungefähr so aus:
"C:\Windows\Drivers\Printer;C:\Windows\Drivers\USB;C:\Windows\Drivers\Video" usw...

Ich betreue hier eine Vielzahl von Client, bei denen diese Pfade immer anders aussehen können oder auch eine andere Reihenfolge haben können.
Nun möchte ich aber einen Pfadnamen ändern.

Z.B. aus C:\Windows\Drivers\Printer wird C:\Windows\Drivers\Drucker

Gleichzeitig soll der Eintrag an der Stelle bleiben, wo er vorher auch war, also in diesem Fall an 1. Stelle.

Kann mir jemand bei diesem Problem helfen? Ich habe echt keine Ahnung wie ich da ran gehen soll.. face-sad

Danke schonmal im Voraus!

kafri84

Content-Key: 65686

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

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

Member: bastla
bastla Aug 08, 2007 at 09:14:57 (UTC)
Goto Top
Hallo kafri84!

Das könnte etwa so gehen:
@echo off & setlocal enabledelayedexpansion
set "Key=HKLM\Software\Microsoft\Windows\CurrentVersion"  
set "Value=DevicePath"  
set "old=C:\Windows\Drivers\Printer"  
set "new=C:\Windows\Drivers\Drucker"  
for /f "tokens=3" %%i in ('reg query %Key% /v %Value%') do set "Data=%%i"  
reg add %Key% /v %Value% /t REG_EXPAND_SZ /d !Data:%old%=%new%! /f>nul
Anmerkung: Falls einer der eingetragenen Pfade ein "!" enthält, können die Variablen %old% und %new% nicht verwendet werden und der Batch müsste etwa so aussehen:
@echo off & setlocal
set "Key=HKLM\Software\Microsoft\Windows\CurrentVersion"  
set "Value=DevicePath"  
for /f "tokens=3" %%i in ('reg query %Key% /v %Value%') do set "Data=%%i"  
reg add %Key% /v %Value% /t REG_EXPAND_SZ /d %Data:C:\Windows\Drivers\Printer=C:\Windows\Drivers\Drucker% /f>nul

Grüße
bastla
Member: kafri84
kafri84 Aug 10, 2007 at 06:13:44 (UTC)
Goto Top
Hi bastla,

danke erstmal für deine Hilfe.

Aber irgendwie funktioniert das nicht so richtig.
Nachdem ich den Batch ausgeführt habe, sind alle Einträge verschwunden, es steht dann nur C:\Windows\Driver (das sind die Reste vom Pfad C:\Windows\Driver Cache) drin...

Woran kann das liegen?

Danke

Gruß

kafri84
Member: bastla
bastla Aug 10, 2007 at 06:31:15 (UTC)
Goto Top
Hallo kafri84!

Ändere durch Hinzufügen der Anführungszeichen die letzte Zeile auf
reg add %Key% /v %Value% /t REG_EXPAND_SZ /d "%Data:C:\Windows\Drivers\Printer=C:\Windows\Drivers\Drucker%" /f>nul  

Grüße
bastla
Member: kafri84
kafri84 Aug 10, 2007 at 07:09:35 (UTC)
Goto Top
Hallo!

das hat leider auch nichts geändert. Sieht immer noch genauso aus...
Member: bastla
bastla Aug 10, 2007 at 21:15:04 (UTC)
Goto Top
Hallo kafri84!

Dann vielleicht so:
@echo off & setlocal
set "Key=HKLM\Software\Microsoft\Windows\CurrentVersion"  
set "Value=DevicePath"  
for /f "tokens=2*" %%i in ('reg query %Key% /v %Value%') do set "Data=%%j"  
reg add %Key% /v %Value% /t REG_EXPAND_SZ /d "%Data:C:\Windows\Drivers\Printer=C:\Windows\Drivers\Drucker%" /f>nul  

Grüße
bastla
Member: kafri84
kafri84 Aug 13, 2007 at 05:26:03 (UTC)
Goto Top
Hallo bastla,

hab es gerade mal getestet. Mit Erfolg!

Ich danke dir für deine Mühe!

Gruß

kafri84