Jump to content
Sign in to follow this  
getsixgo

Registry Key exportieren / Reihenfolge ändern / importieren

Recommended Posts

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?

Share this post


Link to post
Share on other sites

@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.

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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"

Share this post


Link to post
Share on other sites
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte überlege Dir, ob es nicht sinnvoller ist ein neues Thema zu erstellen.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

Werbepartner:



×
×
  • Create New...