chillaholic
Goto Top

Lokalen Drucker als Standarddrucker verwenden

Hallo,

ich suche ein Batch Script dass erkennt, ob ein lokaler Drucker über USB oder LPT angeschlossen ist und ihn falls dem so ist als Standartdrucker auswählt,
da vermehrt fälschlicherweise ein Netzwerkdrucker als Standartdrucker verwendet wird.

Als Ansatz hab ich schonmal den Befehl fürs setzen des Standartdruckers

"rundll32 printui.dll,PrintUIEntry /y /n Druckername"
Wüsste aber nicht wie ich die lokalen Drucker auslesen und anschließend zum Standartdrucker machen könnte.

Freundliche grüße

Chillaholic

Content-Key: 135393

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

Ausgedruckt am: 28.03.2024 um 19:03 Uhr

Mitglied: matsahm
matsahm 08.02.2010, aktualisiert am 18.10.2012 um 18:41:04 Uhr
Goto Top
Hallo,

Vielleicht hilft dir das ja weiter:
installierte Drucker auslesen


Gruß
Mathias Sahm
Mitglied: 76109
76109 08.02.2010 um 13:21:04 Uhr
Goto Top
Hallo Chillaholic!

Du kannst ja mal die beiden VB-Scripts (*.vbs) testen.

Es werden lokale Drucker an USB und LPT ermittelt, wobei auch geprüft wird, ob im Druckernamen das Wort "FAX" (Multifunktionsdrucker) vorkommt, sodass - falls vorhanden - nur der Drucker als Standarddrucker festgelegt wird.

Hier mal 2 Versionen. Die Version 1 setzt den Standardrucker unabhängig davon, ob er ein- oder ausgeschaltet ist und Version 2 setzt den Standarddrucker nur, wenn er eingeschaltet ist.

Version1 - Lokalen Drucker an USB/LPT als Standarddrucker festlegen:
Const strComputer = "."  
Const strSql = "SELECT * FROM Win32_Printer WHERE (PortName LIKE 'USB%' OR PortName LIKE 'LPT%')"  

Dim objWMIService, colItems, objItem
    
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")  
Set colItems = objWMIService.ExecQuery(strSql, , 48)
    
For Each objItem In colItems
    If objItem.Local Then
        If InStr(1, objItem.Name, "FAX", vbTextCompare) = 0 Then objItem.SetDefaultPrinter:  Exit For  
    End If
Next

Version2 - Lokalen Drucker an USB/LPT als Standarddrucker festlegen, nur wenn er Online ist:
Const strComputer = "."  
Const strSql = "SELECT * FROM Win32_Printer WHERE (PortName LIKE 'USB%' OR PortName LIKE 'LPT%')"  

Dim objWMIService, colItems, objItem
    
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")  
Set colItems = objWMIService.ExecQuery(strSql, , 48)
    
For Each objItem In colItems
    If objItem.Local And objItem.WorkOffline = False Then
        If InStr(1, objItem.Name, "FAX", vbTextCompare) = 0 Then objItem.SetDefaultPrinter:  Exit For  
    End If
Next

Gruß Dieter
Mitglied: Chillaholic
Chillaholic 08.02.2010 um 22:33:44 Uhr
Goto Top
Nabend,

@ matsahm
Danke für den Link hab hier auch schon ein bisschen gesucht aber den thread nich gesehen,
denk mal dass der mein Problem gelöst hat.
So ähnlich hab ichs mir vorgestellt.
@ didi1954
Danke für die Hilfe, aber kann die .vbs auch als normaler User aufgerufen werden, glaub dafür fehlen die Rechte.
Mitglied: 76109
76109 08.02.2010 um 23:03:00 Uhr
Goto Top
Hallo Chillaholic!

Hast Du's auspropiert? Quelltext z.B. unter "SetStandardPrinter.vbs" speichern und per Doppelklick starten.

Aufruf per Batch:

@echo Off
cscript //nologo SetStandardPrinter.vbs

Gruß Dieter