Netranger 10 Geschrieben 21. Oktober 2003 Melden Teilen Geschrieben 21. Oktober 2003 Hallo. Und zwar hab ich eine kleine Frage. Hier im Betrieb wird demnächst eine Umstellung der Profile stattfinden. Und zwar ändert sich die Domäne, und auch die Benutzernamen werden sich ändern. Wenn man sich dann ja nun unter dem neuen Profil anmeldet, ist es ja klar, daß das dann im Rohzustand ist und alle benutzerspezifischen Daten verloren sind. Die Möglichkeit, daß man die Benutzerprofile in Windows kopieren kann ist mir bekannt, aber damit ist der Zeitaufwand viel zu groß. Deswegen habe ich mir gedacht, einfach den Registryschlüssel HKey_Current_User im alten Profil zu exportieren und im neuen dann wieder zu importieren. Da die User an ihren Rechnern jeweils über Administratorrechte verfügen, stellt das ja kein Problem dar. Getestet habe ich das nun schon manuell und es funktioniert fast alles einwandfrei. Nur ein paar Teilschlüssel kann er nicht importieren, aber sie werden sowieso nicht benötigt, da diese von Windows selbst wieder erstellt werden, wenn sie fehlen. Nun geht es daran, dies möglichst "***ensicher" zu verpacken. Dazu dachte ich mir, eine Batch bzw ein Script zu schreiben, das erst den Schlüssel HKCU exportiert in eine *.reg-datei. Dann muß sich der ser unter seinem neuen Profil anmelden und ruft ein 2. Script auf, das dann die reg-Datei wieder importiert, unter dem jetztgen HKCU, der ja jetzt die Daten des neuen Profils enthält. Ich habe das als erstes versucht mit dem Befehl reg.exe zu realisieren. Aber hier habe ich das Problem, daß die Registry nicht richtig exportiert wird. In der erstellten Datei sind dann nur noch wilde Zeichen, aber kein Text mehr wie man es von den selbst erstellten reg-Dateinen über Regedit kennt. Deswegen meine Frage: Wie exportiere ich den Teilschlüssel HKey_Current_User in eine Reg-Datei? Zitieren Link zu diesem Kommentar
thorgood 10 Geschrieben 21. Oktober 2003 Melden Teilen Geschrieben 21. Oktober 2003 Exportieren mit REGEDIT.EXE /E HKCU.REG "HKEY_CURRENT_USER" und Importieren mit REGEDIT.EXE /S HKCU.REG Zitieren Link zu diesem Kommentar
Netranger 10 Geschrieben 21. Oktober 2003 Autor Melden Teilen Geschrieben 21. Oktober 2003 hm, jetzt weiss ich welche möglichkeit nach hilfe ich vergessen hab :rolleyes: man sollte sich schon die parameter von regedit anschaun :) danke dann nochmal dafür und damit kann der thread hier auch schon wieder geschlossen werden. Zitieren Link zu diesem Kommentar
Netranger 10 Geschrieben 24. Oktober 2003 Autor Melden Teilen Geschrieben 24. Oktober 2003 also mit regedit /? bekommt ma ja irgendwie nicht die möglichen parameter angezeigt :( deswegen hab ich noch ne frage: und zwar will ich jetzt mit der batch noch einen registryschlüssel (enthält nur werte für HKLM) auch noch remote auf einen anderen rechner in runonce übertragen. wie mach ich das? Zitieren Link zu diesem Kommentar
thorgood 10 Geschrieben 24. Oktober 2003 Melden Teilen Geschrieben 24. Oktober 2003 Regedit geht da glaub ich nicht. Benutze REG.EXE von MS und dann REG ADD \\rs01\HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce /v "eintarg" /d "wert" Zitieren Link zu diesem Kommentar
Netranger 10 Geschrieben 24. Oktober 2003 Autor Melden Teilen Geschrieben 24. Oktober 2003 hab ich auch schon nen weng rumprobiert, aber da kommt immer das: C:\>REG ADD \\pdm-pool-test2\HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce /v "Hotfix" /d "C:\Hotfix.exe -u -z -q -f" To many command-line parameters. ein wenig anderst, aber eigentlich fast das gleiche: C:\>reg add "HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce\Hotfix=Hotfix.exe -u -z -q -f" \\pdm-pool-test2 Error: The operation could not be completed. und noch ein versuch, der fehlschlägt: C:\>reg backup HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce c:\hotfix Der Vorgang wurde erfolgreich beendet. C:\>reg restore c:\hotfix HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce \\pdm-pool-test2 Error: The operation could not be completed. dazu will ich noch sagen, daß der andere rechner ein rechner mit winNT ist. jedoch kann ich mich über den registrierungseditor über registrierung -> mit netzwerkregistrierung verbinden wunderbar zu der registry vom remoterechner verbinden. Zitieren Link zu diesem Kommentar
ThaWild 10 Geschrieben 24. Oktober 2003 Melden Teilen Geschrieben 24. Oktober 2003 vielleicht hilft dir des was http://www.mcseboard.de/showthread.php?s=&threadid=15247 greez stefan Zitieren Link zu diesem Kommentar
thorgood 10 Geschrieben 24. Oktober 2003 Melden Teilen Geschrieben 24. Oktober 2003 Bei mir geht deine erste Zeile wunderbar. Welch Version von reg.exe setz du ein. Bei mir Registry Console Tool For Windows 2000 - version 2.0 Copyright © Microsoft Corp. 1981-1999. All rights reserved Zitieren Link zu diesem Kommentar
Netranger 10 Geschrieben 24. Oktober 2003 Autor Melden Teilen Geschrieben 24. Oktober 2003 thawild, danke für den link, aber des bringt mir net viel weil ich des alles in ner bat-datei ausführen will. Command-line registry manipulation utility version 1.04.Copyright Microsoft Corporation 1997. All rights reserved. hups, en weng älter :) aber hab ich ausm resource kit für win 2000 Zitieren Link zu diesem Kommentar
Netranger 10 Geschrieben 24. Oktober 2003 Autor Melden Teilen Geschrieben 24. Oktober 2003 so, außer den paar kleine kinderkrankheiten, die noch da sind, funtioniert des jetzt so weit so gut. jetzt wär noch ein problem, nach dessen lösung ich in die luft springen könnte. und zwar würd ich gerne der batch-datei eine liste von ip-adressen übergeben, die dann nacheinander abgearbeitet werden. kann man mit ner batchdatei ne text-file zeilenweise auslesen lassen und immer eine ip nach der anderen einlesen? und wenn ja wie? über ein java-programm könnte ich es realisieren, aber das ist erstens nochmal zusätzliche arbeit und zweitens ein problem, wenn auf dem rechner dann kein java interpreter installiert sind. Zitieren Link zu diesem Kommentar
thorgood 10 Geschrieben 24. Oktober 2003 Melden Teilen Geschrieben 24. Oktober 2003 In einer Zeile FOR /F "eol=; tokens=1 delims=, " %%i in (Datei.txt) do REG ADD \\%%i\HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce /v "Hotfix" /d "C:\Hotfix.exe -u -z -q -f" Zitieren Link zu diesem Kommentar
thumb 10 Geschrieben 24. Oktober 2003 Melden Teilen Geschrieben 24. Oktober 2003 Hi Netranger, entweder mit FOR von der Commandline ( resp. Batch ); mit dem Nachteil, dass alles in einer Zeile stehen muss ! Oder, so mach ich´s für alle möglichen automatisierten Doings, mit VBS : Als Beispiel soll ein Script dienen, mit dem ich mal alle in einem Texfile definfierten ( Namen stehen einfach untereinander ) Hostnamen ( Computerkonten ) aus der Dömäne löschte. '######################################################################################################## on error resume next Dim strComp Dim strDomain Dim objDomain Dim objArgs 'Angabe der Domäne, aus der die Computerkonten gelöscht werden sollen strDomain = "<DomainName>" '##################--Wirklich Ausführen ????--############################################################ msg = "Kurzbeschreibung:" & vbCr & vbCr &"Dieses Skript löscht alle, im Textfile angegebenen Computerkonten in der Domäne " & strDomain & ". " & vbCr & vbCr & "Das Skript jetzt ausführen?" antwort = MsgBox(msg, vbYesNo + vbQuestion) if antwort = vbNo then MsgBox "Abbruch", vbExclamation WScript.Quit end if '########################--INPUT--Textfile wird ausgelesen--############################################# Set objArgs = WScript.Arguments If objArgs.Count > 0 Then file = objArgs(0) Else file = InputBox("Welche Datei soll ausgelesen werden ?" ,"Datei angeben") End If Set WshShell = CreateObject ("WScript.Shell") Set fso = CreateObject("Scripting.FileSystemObject") If fso.FileExists(file) Then Set txtStream = fso.OpenTextFile(file) Do While Not (txtStream.atEndOfStream) txt = txtStream.Readline details = Split(txt, ";") strComp = Trim (details(0)) '#######--LOOP--Für alle, im File angebenen Computer wird folgendes ausgeführt--####################### 'Löschen des Computerkontos Set objDomain = GetObject("WinNT://" & strDomain) Set objNTComp = GetObject("WinNT://" & strDomain & "/" & strComp & "$") Call objDomain.Delete("Computer", strComp) '######################################### Loop Else 'Datei nicht vorhanden MsgBox "Die Datei" & " " & file & " " & "konnte nicht gefunden werden !", vbExclamation, "Abbruch" End If MsgBox "Script beendet" Gruß THUMB Zitieren Link zu diesem Kommentar
Netranger 10 Geschrieben 27. Oktober 2003 Autor Melden Teilen Geschrieben 27. Oktober 2003 also, ich habs jetzt mit FOR gelöst. Läuft ohne Probleme. @Thumb: Was du erwähnt hast mit alles in einer Zeile habe ich durch eine 2. Batch-Datei und Goto-Anweisungen übergangen. (Ja, ich weiss, daß Programmieren mit Goto unsauber und veraltet ist. :rolleyes: Habs aber trotzdem gemacht, weil es in meinem Fall des schlauste war und Batch-Dateien leider keine andere Möglichkeiten bieten) Jetzt hab ich nur noch eine kleine unfeine Sicherheitslücke in meinen Batches. Folgender Aufbau: Die erste Batchdatei wird aufgerufen. Ihr werden einige Parameter übergeben, darunter auch ein Username mit Adminrechten in der ganzen Domäne und das zugehörige Passwort. In der ersten Batchdatei wird wiederum eine Batch-Datei aufgerufen, der die Login-Daten weitergegeben werden. Das Problem dabei ist nun, daß das Passwort im Klartext auf der Bildschirmausgabe erscheint. Beim ersten Schritt, wo der Benutzer sein Passwort eingibt wird es wohl nicht möglich sein, es zu verstecken. Aber bei dem Aufruf der 2. Batch wird die Befehlszeile mit dem Aufruf dargestellt, und hier wird dann auch das Passwort erneut angezeigt. Da mit diesem Script eine Liste von ungefähr 500 IP-Adressen abgearbeitet wird, erscheint damit das Passwort 500 mal auf dem Bildschirm, was eine erhebliche Sicherheitslücke darstellt. Deswegen wollte ich fragen, wie ich die Ausgabe der Befehlszeile mit dem Aufruf der 2. Batch unterdrücken kann. Hier mal meine 2 Batch-Dateien: HotfixNT4.bat (Parameter: patchdatei, ip-datei, username, userpasswort) @echo off echo. echo. echo.********** echo.%DATE% %TIME% : Ausbringung von %1%. echo. echo. >>patch.log echo. >>patch.log echo.******************** >>patch.log echo.%DATE% %TIME% : Ausbringung von %1%. >>patch.log echo. >>patch.log FOR /F "eol=; tokens=1 delims=, " %%i in (%2) do hotfixnt4_2.bat %1 %%i %3 %4 HotfixNT4_2.bat (Parameter: patchdatei, ip-adresse, username, userpasswort) @echo off echo. echo.Baue Verbindung zu %2 auf ... net use k: \\%2\C$ %4 /user:%3 >>log.txt IF /I %ERRORLEVEL% NEQ 0 (goto connectfehlschlag) echo. %DATE% %TIME% : Verbunden mit %2. echo. %DATE% %TIME% : Verbunden mit %2. >>patch.log xcopy %1 k:\Temp\ /y >>log.txt IF /I %ERRORLEVEL% NEQ 0 (goto copyfehlschlag) REG ADD \\%2\HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce /v "%1" /d "C:\%1 -u -z -q -f" /f >>log.txt IF %ERRORLEVEL% == 0 (goto erfolg) ELSE (goto registryfehlschlag) goto ende :connectfehlschlag: echo. %DATE% %TIME% : FEHLER: Konnte mich auf %1 nicht connecten. echo. echo. %DATE% %TIME% : FEHLER: Konnte mich auf %1 nicht connecten. >>patch.log echo. >>patch.log goto ende :copyfehlschlag: echo. %DATE% %TIME% : FEHLER: Konnte die Datei nicht auf %1 kopieren. echo. echo. %DATE% %TIME% : FEHLER: Konnte die Datei nicht auf %1 kopieren. >>patch.log echo. >>patch.log goto netdelete :registryfehlschlag echo. %DATE% %TIME% : FEHLER: Registry auf %1 nicht ge„ndert. echo. echo. %DATE% %TIME% : FEHLER: Registry auf %1 nicht geändert. >>patch.log echo. >>patch.log goto netdelete :erfolg echo. %DATE% %TIME% : Patch auf %1 ausgebracht. echo. echo. %DATE% %TIME% : Patch auf %1 ausgebracht. >>patch.log echo. >>patch.log goto netdelete :netdelete net use /delete k: >>log.txt :ende Zitieren Link zu diesem Kommentar
thorgood 10 Geschrieben 27. Oktober 2003 Melden Teilen Geschrieben 27. Oktober 2003 Hallo Netranger, teste mal wie anbei. Hab es leider nicht ausprobiert. FOR /F "eol=; tokens=1 delims=, " %%i in (%2) do hotfixnt4_2.bat %1 %%i %3 %4 >NUL: Zitieren Link zu diesem Kommentar
Netranger 10 Geschrieben 27. Oktober 2003 Autor Melden Teilen Geschrieben 27. Oktober 2003 negativ, bringt nix, er schreibt mir die zeile immernoch hin. zudem wird mir dann damit die ganze ausgabe, die die 2. batchdatei macht unterdrückt, aber ich will ja auf dem bildschirm meine selbst geschriebenen nachrichten sehen 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.