Alte ntuser.dat hiven und Reg Einträge in neue Registry übernehmen?
Hallo @all,
bräuchte beim Scripten bitte eure Hilfe
Muss aus einer alten NTUSER.DAT Daten auslesen und dann in die HKCU übernehmen:
Müsste folgende 4 Punkte in ein Batch File einbauen
REM 1) Drucker: alle eingerichteten Drucker vom Server serverPRNQ (keine weiteren Drucker), auch der vom User eingerichtete Standarddrucker soll wieder gesetzt werden,
Bisher habe ich wie folgt gearbeitet:
REM HIVE Migration anlegen
reg add HKEY_LOCAL_MACHINE\Software\Migration /f
reg load "HKU\_Migration\%username%" "\\server\Profiles$\%username%\ntuser.dat"
REM 1) Drucker: alle eingerichteten Drucker vom Server serverPRNQ (keine weiteren Drucker), auch der vom User eingerichtete Standarddrucker soll wieder gesetzt werden,
REM ------------------------------------------
reg copy "HKU\_Migration\%username%\Software\Microsoft\Windows NT\CurrentVersion\Windows\" "HKCU\_Migration\%username%\Software\Microsoft\Windows NT\CurrentVersion\Windows\" /f
reg copy "HKU\_Migration\%username%\Software\Microsoft\Windows NT\CurrentVersion\Devices" "HKCU\Software\Microsoft\Windows NT\CurrentVersion\Devices" /f
reg query "HKCU\Software\Microsoft\Windows NT\CurrentVersion\Devices" > "%temp%\Drucker.txt"
find /i \\KSVPRNQ "%temp%\Drucker.txt" > "%temp%\Drucker2.txt"
for /f "skip=2 tokens=1" %%i in ("%temp%\Drucker2.txt") do rundll32 printui.dll,PrintUIEntry /q /dn /n %%i
REM HIVE Migration anlegen
reg unload "HKU\_Migration\%username%"
Ausgabe bei find /i \\serverPRNQ "%temp%\Drucker.txt" > "%temp%\Drucker2.txt"
Drucker2.txt
\\serverPRNQ\prt01 REG_SZ winspool,Ne00:
So nun meine Frage:
zu REM 1: Habe die Einträge aus HKU auf HCU kopiert, das funktioniert auch, jedoch verstehe ich nicht wie ich nun die Installation aller Drucker inizieren kann, bzw wie der Befehl geschrieben werden musss, dass alle Drucker installiert werden die der Anforderung entsprechen (for schleife mit suche?)
Wäre echt dankbar, wenn ich hier nen Fehler drinnen habe, dass mir jemand die passende Lösung schreibt
DAnke für die Hilfe
bräuchte beim Scripten bitte eure Hilfe
Muss aus einer alten NTUSER.DAT Daten auslesen und dann in die HKCU übernehmen:
Müsste folgende 4 Punkte in ein Batch File einbauen
REM 1) Drucker: alle eingerichteten Drucker vom Server serverPRNQ (keine weiteren Drucker), auch der vom User eingerichtete Standarddrucker soll wieder gesetzt werden,
Bisher habe ich wie folgt gearbeitet:
REM HIVE Migration anlegen
reg add HKEY_LOCAL_MACHINE\Software\Migration /f
reg load "HKU\_Migration\%username%" "\\server\Profiles$\%username%\ntuser.dat"
REM 1) Drucker: alle eingerichteten Drucker vom Server serverPRNQ (keine weiteren Drucker), auch der vom User eingerichtete Standarddrucker soll wieder gesetzt werden,
REM ------------------------------------------
reg copy "HKU\_Migration\%username%\Software\Microsoft\Windows NT\CurrentVersion\Windows\" "HKCU\_Migration\%username%\Software\Microsoft\Windows NT\CurrentVersion\Windows\" /f
reg copy "HKU\_Migration\%username%\Software\Microsoft\Windows NT\CurrentVersion\Devices" "HKCU\Software\Microsoft\Windows NT\CurrentVersion\Devices" /f
reg query "HKCU\Software\Microsoft\Windows NT\CurrentVersion\Devices" > "%temp%\Drucker.txt"
find /i \\KSVPRNQ "%temp%\Drucker.txt" > "%temp%\Drucker2.txt"
for /f "skip=2 tokens=1" %%i in ("%temp%\Drucker2.txt") do rundll32 printui.dll,PrintUIEntry /q /dn /n %%i
REM HIVE Migration anlegen
reg unload "HKU\_Migration\%username%"
Ausgabe bei find /i \\serverPRNQ "%temp%\Drucker.txt" > "%temp%\Drucker2.txt"
Drucker2.txt
\\serverPRNQ\prt01 REG_SZ winspool,Ne00:
So nun meine Frage:
zu REM 1: Habe die Einträge aus HKU auf HCU kopiert, das funktioniert auch, jedoch verstehe ich nicht wie ich nun die Installation aller Drucker inizieren kann, bzw wie der Befehl geschrieben werden musss, dass alle Drucker installiert werden die der Anforderung entsprechen (for schleife mit suche?)
Wäre echt dankbar, wenn ich hier nen Fehler drinnen habe, dass mir jemand die passende Lösung schreibt
DAnke für die Hilfe
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 179497
Url: https://administrator.de/contentid/179497
Ausgedruckt am: 25.11.2024 um 23:11 Uhr
2 Kommentare
Neuester Kommentar
Hi,
ich habe vor einiger Zeit ein Script gebastelt mit dem man Printernamen eines Users ändern kann (auf dem Druckservern wurden damals andere Sharenamen angelegt). Vielleicht hilft es Dir weiter.
Da ich nicht die Zeit habe das Script an Deine Bedürfnisse umzustellen, kannst Du in dem benötigten Textfile für den alten und neuen Namen den gleichen Wert nehmen.
Den Drucker hast Du in Deinem Drucker2.txt bereits, benötigt wird nur der Shareteil (\\serverPRNQ\prt01) .
(\\SERVER\PRINTERNAME;\\SERVER\PRINTERNAME), Dann würde der Inhalt in etwa so aussehen:
\\serverPRNQ\prt01;\\serverPRNQ\prt01
\\serverPRNQ\prt02;\\serverPRNQ\prt02
\\serverPRNQ\prt......
Das File könnte nach dem Usernamen benannt sein (NAME_printers.txt) und mit \\MYSERVER\MYSHARE\%USERNAME%_printers.txt aufgerufen werden. im Code zu finden bei Set fsFILE = fs.GetFile("\\MYSERVER\MYSHARE\printers.txt")
Happy testing...
bye
Karo
ich habe vor einiger Zeit ein Script gebastelt mit dem man Printernamen eines Users ändern kann (auf dem Druckservern wurden damals andere Sharenamen angelegt). Vielleicht hilft es Dir weiter.
Da ich nicht die Zeit habe das Script an Deine Bedürfnisse umzustellen, kannst Du in dem benötigten Textfile für den alten und neuen Namen den gleichen Wert nehmen.
Den Drucker hast Du in Deinem Drucker2.txt bereits, benötigt wird nur der Shareteil (\\serverPRNQ\prt01) .
(\\SERVER\PRINTERNAME;\\SERVER\PRINTERNAME), Dann würde der Inhalt in etwa so aussehen:
\\serverPRNQ\prt01;\\serverPRNQ\prt01
\\serverPRNQ\prt02;\\serverPRNQ\prt02
\\serverPRNQ\prt......
Das File könnte nach dem Usernamen benannt sein (NAME_printers.txt) und mit \\MYSERVER\MYSHARE\%USERNAME%_printers.txt aufgerufen werden. im Code zu finden bei Set fsFILE = fs.GetFile("\\MYSERVER\MYSHARE\printers.txt")
' CHANGE Printers for Users
'
' Karo, 08.09.2010
' With this script you can change the mapping from Printernames
' OLDNAME to NENAME in a Textfile
' Syntax in TXT = \\SERVER\PRINTERNAMEOLD;\\SERVER\PRINTERNAMENEW
'
' 20100908 Initial
' 20100909 Set Default Printer
' 20100910 Added Loop for check if Printer connected after renaming
' Set printers
' ******************************
Const HKEY_CURRENT_USER = &H80000001
Const HKEY_LOCAL_MACHINE = &H80000002
On Error Resume Next
Dim objNetwork, fs, fsFILE
Dim Counter, CounterU, aryPrinter(999), aryPrinterU(100), strComputer, strUsername
Dim splPrinter, x, y, fstemp, DefPrinter
Set objNetwork = CreateObject("WScript.Network")
Set fs = CreateObject("Scripting.FileSystemObject")
Set fstemp = fs.GetSpecialFolder(2)
wscript.echo ("The path to your TEMP folder is '" & fstemp & "'." )
'COPY FILE TO TEMP
'wscript.echo ("\\MYSERVER\MYSHARE\printers.txt")
Set fsFILE = fs.GetFile("\\MYSERVER\MYSHARE\printers.txt")
fsFILE.copy (fstemp & "\printers.txt")
'READ FILE
Set fsFILE = fs.OpenTextFile(fstemp & "\printers.txt")
Counter = 0
Do Until fsFILE.AtEndOfStream
Counter = Counter + 1
aryPrinter(Counter) = fsFILE.Readline
'wscript.echo Counter & " ---- " & aryPrinter(Counter)
Loop
strComputer = "."
'Read User Printer Connections
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\default:StdRegProv")
CounterU = 0
strKeyPath = "Printers\Connections"
oReg.EnumKey HKEY_CURRENT_USER, strKeyPath, arrSubKeys
For Each subkey In arrSubKeys
CounterU = CounterU + 1
aryPrinterU(CounterU) = UCase(Replace(subkey,",","\"))
Next
'Get Current Username
strUsername = objNetwork.UserName
wscript.echo strUsername & " - Mapped Printers: " & CounterU
'READ MAPPED PRINTERS FROM USER
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colInstalledPrinters = objWMIService.ExecQuery _
("Select * from Win32_Printer")
Y = 0
DefPrinter = "FALSE"
For Each objPrinter in colInstalledPrinters
For y = 1 to CounterU
If InStr(1,UCase(aryPrinterU(Y)),UCase(objPrinter.Name),1) > 0 Then
wscript.echo "##################################################"
WScript.echo "SEARCH: " & aryPrinterU(Y)
For x = 1 to Counter
splPrinter=Split(aryPrinter(x),";")
'COMPARE MAPPED PRINTERS WITH PRINTERS IN FILE
If InStr(1,aryPrinterU(Y),splPrinter(0),1) > 0 Then
WScript.echo aryPrinterU(Y) & " - " & splPrinter(0)
wscript.echo "-YES-"
'Is Printer Default
'DefPrinter = "FALSE"
If objPrinter.Default = "True" Then
DefPrinter = splPrinter(1)
wscript.echo "Default Printer Flag is set on " & splPrinter(0) & ""
' Else
' DefPrinter = "FALSE"
' Exit For
End If
'DELETE OLD MAPPING
wscript.echo "-Delete Old Mapping-"
objNetwork.RemovePrinterConnection splPrinter(0)
wscript.echo splPrinter(0)
'NEW MAPPING
wscript.echo "-New Mapping-"
objNetwork.AddWindowsPrinterConnection splPrinter(1)
wscript.echo splPrinter(1)
wscript.echo "######END " & splPrinter(1) & "#####"
Else
End If
Next
End If
Next
Next
Y = 0
wscript.echo "##################################################"
wscript.echo ""
wscript.echo ""
wscript.echo "##################################################"
If DefPrinter = "FALSE" Then
wscript.echo "No Default Printer in Remapped Printers"
Else
wscript.echo "Check for Connection: " & DefPrinter & " "
For counter = 0 to 2
Set colInstalledPrinters = objWMIService.ExecQuery _
("Select * from Win32_Printer")
For Each objPrinter in colInstalledPrinters
'wscript.echo UCase(objPrinter.Name)& " -> " & UCase(DefPrinter)
If InStr(1,UCase(objPrinter.Name),UCase(DefPrinter),1) > 0 Then
wscript.echo "-Bingo!"
counter = 3
Exit For
Else
counter = 1
End If
Next
Next
'IF PRINTER IS DEFAULT (True) SET NEW DEFAULT
If DefPrinter = "FALSE" Then
Else
wscript.echo "-Set as Default"
'objNetwork.SetDefaultPrinter splPrinter(1)
'wscript.echo splPrinter(1)
objNetwork.SetDefaultPrinter DefPrinter
wscript.echo DefPrinter
End If
End If
wscript.echo "##################################################"
wscript.echo ""
wscript.echo "#######################"
wscript.echo "###### END OF ALL " & "#####"
wscript.echo "#######################"
WScript.sleep 20000
Happy testing...
bye
Karo