Jump to content

Registry Key exportieren / Reihenfolge ändern / importieren


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo

 

Folgendendes Problem bereitet mir Kopfzerbrechen:

 

Ich müsste die Werte des folgenden Registry Keys exportieren und in einer bestimmten Reihenfolge wieder importieren

 

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Contro l\NetworkProvider\HwOrder

 

Mögliche Werte "ProviderOrder"="RDPNP,NCredMgr,LanmanWorkstation,NetwareWorkstatio n,WebClient,PnSson"

 

Nun müssten die Werte NCredMgr,LanmanWorkstation,NetwareWorkstation ans Ende des Schlüssels gehängt und der ganze Key wieder importiert werden.

 

Also zum Beispiel so: "ProviderOrder"="RDPNP,WebClient,PnSson,NCredMgr,LanmanWorkstation,NetwareWorkstation"

 

Ich geh jetzt mal davon aus dass die Geschichte mit einem VBScript lösbar sein müsste, bin aber leider nicht so der Scriptie

 

Kann mir da jemand netterweise ein bisschen auf die Sprünge helfen?

Link zu diesem Kommentar

@IThome

 

Danke, das ist mir schon klar. Habe wohl ein bisschen wenig Infos geliefert.

 

Es geht darum dass ich die Registry bei einigen Hundert Workstations auslesen muss und die Werte variabel, resp. von Gerät zu Gerät verschieden sein können.

 

Nur die Werte NCredMgr,LanmanWorkstation,NetwareWorkstation müssen auf allen Kisten vorhanden sein und am Schluss des Keys stehen.

 

Ich bin Paketierer und habe erst gedacht ich könnte es mit einem Paket lösen, komme aber auf keine Lösung.

Link zu diesem Kommentar

Hallo,

Deine Bausteine für die Batchdatei sind prinzpiell

for /F delims ... in (....) do @reg add %%i,%%j,%%k

 

such mal in der XP-Hilfe nach "for" und nach "reg add"

 

Wie die Lösung konkret aussieht, hängt unteranderem davon ab, wie dein Input vorliegt.

z.b. csv-File

Rechner1,key21,value31,value32

Rechner2,key21,value31,value33

 

oder

welche ValueTyp du verändern willst

 

cu

blub

Link zu diesem Kommentar

Eine kleine Bastelhilfe in VBScript

 

Dim WshShell
Set WshShell = WScript.CreateObject("WScript.Shell")

sOrder = WshShell.RegRead("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\NetworkProvider\HwOrder\ProviderOrder")
aOrder = Split(sOrder, ",")
sOrderNew = ""

For each Item in aOrder
  If Item <> "NCredMgr" And Item <> "LanmanWorkstation" And Item <> "NetwareWorkstation" Then
     sOrderNew = sOrderNew & Item & ","
  End If
Next

sOrderNew = sOrderNew & "NCredMgr,LanmanWorkstation,NetwareWorkstation"

WshShell.RegWrite "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\NetworkProvider\HwOrder\ProviderOrder", sOrderNew, "REG_SZ"

 

Das Script liest den Wert aus deinem Registryschlüssel.

Split liest die durch Komma getrennten Werte in ein Array.

Die For Each Schleife hängt alle Werte die nicht deinen drei Kandidaten entsprechen wieder aneinander.

Hinter Next werden dann die drei Kandidaten am Ende angehangen und zum Schluss alles wieder in die Registry geschrieben.

 

Probier mal.

 

thorgood

Link zu diesem Kommentar

Hi

 

Vielen Dank für Eure Hilfe. Hat ein bisschen länger gedauert :-)

 

@thorgood

 

Mit deinem Script, resp. Teilen daraus konnte ich das Problem schlussendlich lösen.

Muss dazu sagen dass dein Script unter XP von Anfang an super funktioniert hat.

Habe aber vergessen zu sagen dass wir noch unter W2k arbeiten.

Von daher musste ich es ein bisschen abändern.

Der Code (mein Teil, nicht thorgood's :D )ist sicher nicht perfekt, ich weiss. Bin (leider) nicht der Scriptguru.

Aber Hauptsache es läuft. Also, vielen Dank nochmal :)

 

 

 

Dim Path
Dim Value

Set WshShell = CreateObject("Wscript.Shell")

'Aus Registry auslesen, wo die Temporären Dateien liegen
Path = "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\NetworkProvider\HwOrder"

'Ausgelesenen Pfad in die Variable <Value> schreiben
Value = WshShell.RegRead(Path & "\ProviderOrder")

sOrder = Value
aOrder = Split(sOrder, ",")
sOrderNew = ""

For each Item in aOrder
  If Item <> "NCredMgr" And Item <> "LanmanWorkstation" And Item <> "NetwareWorkstation" Then
     sOrderNew = sOrderNew & Item & ","
  End If
Next

sOrderNew = sOrderNew & "NCredMgr,LanmanWorkstation,NetwareWorkstation"


WshShell.RegWrite "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\NetworkProvider\Order\ProviderOrder", sOrderNew, "REG_SZ"

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...