Standarddrucker per Batch auslesen und setzten OHNE Registry
Hallo
Ich habe folgendes Problem:
In einer Batchdatei möchte ich den Standarddrucker auslesen und dann wieder setzten, da alle Drucker zwischendurch gelöscht werden.
Bisher habe ich dies folgendermaßen gemacht:
regedit /e %HOMESHARE%\Windows\Standarddrucker.reg "HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows\"
...Danach werden alle Drucker gelöscht. Auch die Einstellung vom Standarddrucker und dann...
regedit /s %HOMESHARE%\Windows\Standarddrucker.reg
Ich habe jetzt aber das Problem, dass man auf dem neuen Server keinen Zugriff mehr auf die Registry hat!
Meine Idee war jetzt:
rundll32 printui.dll,PrintUIEntry /y /n "%Stadarddruckervariable%"
Mein Problem ist also, wie bekomme ich den Standarddrucker in eine Variable, da ich nicht mehr auf die Registry zugreifen kann.
Für andere Lösungswege bin ich ebenfalls dankbar.
Ich habe folgendes Problem:
In einer Batchdatei möchte ich den Standarddrucker auslesen und dann wieder setzten, da alle Drucker zwischendurch gelöscht werden.
Bisher habe ich dies folgendermaßen gemacht:
regedit /e %HOMESHARE%\Windows\Standarddrucker.reg "HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows\"
...Danach werden alle Drucker gelöscht. Auch die Einstellung vom Standarddrucker und dann...
regedit /s %HOMESHARE%\Windows\Standarddrucker.reg
Ich habe jetzt aber das Problem, dass man auf dem neuen Server keinen Zugriff mehr auf die Registry hat!
Meine Idee war jetzt:
rundll32 printui.dll,PrintUIEntry /y /n "%Stadarddruckervariable%"
Mein Problem ist also, wie bekomme ich den Standarddrucker in eine Variable, da ich nicht mehr auf die Registry zugreifen kann.
Für andere Lösungswege bin ich ebenfalls dankbar.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 79654
Url: https://administrator.de/contentid/79654
Ausgedruckt am: 22.11.2024 um 19:11 Uhr
7 Kommentare
Neuester Kommentar
Hallo Drizzle,
schau dir mal den Befehl wenn es eine Patchdatei ist?!
con2prt /f
an! Der Befehl bewirkt das bei einem User alle Drucker gelöscht werden.
Danach kann man die gewünschten Drucker wieder verbinden!
Bei uns schauts so aus!
""
@echo off
con2prt /f
rem *Druckerverbindung*
con2prt /c \\*Server*\*Druckerfreigabe*
con2prt /cd \\*Server*\*Druckerfreigabe*
""
"/cd" bewirkt das es der standarddrucker wird!
Hoffe das hilft dir weiter!
erich
schau dir mal den Befehl wenn es eine Patchdatei ist?!
con2prt /f
an! Der Befehl bewirkt das bei einem User alle Drucker gelöscht werden.
Danach kann man die gewünschten Drucker wieder verbinden!
Bei uns schauts so aus!
""
@echo off
con2prt /f
rem *Druckerverbindung*
con2prt /c \\*Server*\*Druckerfreigabe*
con2prt /cd \\*Server*\*Druckerfreigabe*
""
"/cd" bewirkt das es der standarddrucker wird!
Hoffe das hilft dir weiter!
erich
Guten Morgen!
OK das nächste was zu tun wäre wenn man es auf diese weiße weiter führen würde wie ich sie angefangen habe ist jeden User ins script einzutragen!
also erst die die Drucker löschen mit dem bekannten befehl und danach alle drucker verbinden ohne einen standarddrucker zu definieren.
danach im script ein "if"
Beispiel:
@ech off
con2prt /f
con2prt /c \\SERVER\DRUCKERFREIGABE
con2prt /c \\SERVER\DRUCKERFREIGABE
if /I %username% == MUSTER.M con2prt /cd \\SERVER\DRUCKERFREIGABE
So funktioniert es auch!
erich
OK das nächste was zu tun wäre wenn man es auf diese weiße weiter führen würde wie ich sie angefangen habe ist jeden User ins script einzutragen!
also erst die die Drucker löschen mit dem bekannten befehl und danach alle drucker verbinden ohne einen standarddrucker zu definieren.
danach im script ein "if"
Beispiel:
@ech off
con2prt /f
con2prt /c \\SERVER\DRUCKERFREIGABE
con2prt /c \\SERVER\DRUCKERFREIGABE
if /I %username% == MUSTER.M con2prt /cd \\SERVER\DRUCKERFREIGABE
So funktioniert es auch!
erich
Hi Druzzle,
mit
ON ERROR RESUME NEXT
ScriptLogName = "defprinter.log"
strComputer = "."
Set WshShell = WScript.CreateObject("WScript.Shell")
fTMP = WshShell.ExpandEnvironmentStrings("%HOMEDRIVE%")
Set fso = WScript.CreateObject("Scripting.FileSystemObject")
Set inputFile = fso.OpenTextFile("H:" & "\" & ScriptLogName, 2, True)
Set objWMIService = GetObject ("winmgmts:\\" & strComputer & "\root\cimv2")
Set colPrinters = objWMIService.ExecQuery ("Select * From Win32_Printer Where Default = TRUE")
For Each objPrinter in colPrinters
inputFile.WriteLine(objPrinter.ShareName)
Next
kannst Du den Default Drucker auslesen und in File schreiben um ihn für eine weitere Verarbeitung benutzen zu können.
Gruß
Stefan
mit
ON ERROR RESUME NEXT
ScriptLogName = "defprinter.log"
strComputer = "."
Set WshShell = WScript.CreateObject("WScript.Shell")
fTMP = WshShell.ExpandEnvironmentStrings("%HOMEDRIVE%")
Set fso = WScript.CreateObject("Scripting.FileSystemObject")
Set inputFile = fso.OpenTextFile("H:" & "\" & ScriptLogName, 2, True)
Set objWMIService = GetObject ("winmgmts:\\" & strComputer & "\root\cimv2")
Set colPrinters = objWMIService.ExecQuery ("Select * From Win32_Printer Where Default = TRUE")
For Each objPrinter in colPrinters
inputFile.WriteLine(objPrinter.ShareName)
Next
kannst Du den Default Drucker auslesen und in File schreiben um ihn für eine weitere Verarbeitung benutzen zu können.
Gruß
Stefan