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.
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.
Please also mark the comments that contributed to the solution of the article
Content-Key: 79654
Url: https://administrator.de/contentid/79654
Printed on: April 24, 2024 at 06:04 o'clock
7 Comments
Latest comment
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