getsixgo 10 Posted July 10, 2007 Report Share Posted July 10, 2007 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? Quote Link to post
IThome 10 Posted July 10, 2007 Report Share Posted July 10, 2007 Du kannst mit REG.EXE den Key auch gezielt so setzen, wie Du ihn haben willst ... Quote Link to post
getsixgo 10 Posted July 10, 2007 Author Report Share Posted July 10, 2007 @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. Quote Link to post
blub 115 Posted July 10, 2007 Report Share Posted July 10, 2007 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 Quote Link to post
thorgood 10 Posted July 10, 2007 Report Share Posted July 10, 2007 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 Quote Link to post
getsixgo 10 Posted July 12, 2007 Author Report Share Posted July 12, 2007 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" Quote Link to post
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.