drizzle
Goto Top

Standarddrucker per Batch auslesen und setzten OHNE Registry

Hallo face-smile

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.

Content-Key: 79654

Url: https://administrator.de/contentid/79654

Printed on: April 18, 2024 at 14:04 o'clock

Member: erich81
erich81 Jan 31, 2008 at 15:31:56 (UTC)
Goto Top
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
Member: Drizzle
Drizzle Jan 31, 2008 at 17:24:32 (UTC)
Goto Top
Danke erstmal. Ich werds am Dienstag mal testen, denn übers Wochenende wird gefeiert! ALAAF!
Member: Drizzle
Drizzle Feb 06, 2008 at 11:58:25 (UTC)
Goto Top
Hab mir con2prt.exe mal angeschaut, aber es existiert immer noch das Problem, dass beim Befehl:

con2prt /cd \\*Server*\*Druckerfreigabe*

die Variable "*Server*\*Druckerfreigabe*" nicht festgelegt ist.

Mein Problem besteht ja darin, dass (bevor alle Drucker gelöscht werden) der Standarddrucker irgendwo vermerkt werden muss, damit er danach wiederhergestellt werden kann.
Und zwar für den User, der sich gerade anmeldet... (Wir haben ein Skript für alle User.)
Member: erich81
erich81 Feb 07, 2008 at 05:48:13 (UTC)
Goto Top
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
Member: stbewo
stbewo Feb 07, 2008 at 06:06:47 (UTC)
Goto Top
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
Member: Drizzle
Drizzle Feb 11, 2008 at 10:06:03 (UTC)
Goto Top
Supergeil! Danke Stefan! Funktioniert jetzt folgendermassen:

\\Server\Homelaufwerk\Standarddrucker.vbs
(<- Hab dein Skript etwas abgewandelt dort eingebunden)

for /F %%i in (defprinter.log) do set Standard=%%i
(<- Text in Variable speichern)

rundll32 printui.dll,PrintUIEntry /y /n \\DRUCKERSERVER\%Standard%
(<- Als Standardrucker hinzufügen)

Du bist mein Held ^^
Member: mikmcmoe
mikmcmoe Jul 19, 2011 at 10:34:41 (UTC)
Goto Top
Hi Drizzle,
ist zwar schon ein bisschen her, aber magst Du das Script nochmal vollständig posten?
Ich wäre Dir zu Dank verpflichtet!