getsixgo 10 Geschrieben 10. Juli 2007 Melden Teilen Geschrieben 10. Juli 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? Zitieren Link zu diesem Kommentar
IThome 10 Geschrieben 10. Juli 2007 Melden Teilen Geschrieben 10. Juli 2007 Du kannst mit REG.EXE den Key auch gezielt so setzen, wie Du ihn haben willst ... Zitieren Link zu diesem Kommentar
getsixgo 10 Geschrieben 10. Juli 2007 Autor Melden Teilen Geschrieben 10. Juli 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. Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 10. Juli 2007 Melden Teilen Geschrieben 10. Juli 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 Zitieren Link zu diesem Kommentar
thorgood 10 Geschrieben 10. Juli 2007 Melden Teilen Geschrieben 10. Juli 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 Zitieren Link zu diesem Kommentar
getsixgo 10 Geschrieben 12. Juli 2007 Autor Melden Teilen Geschrieben 12. Juli 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" Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.