Die WshNetwork.EnumPrinterConnections
Sammlung liefert keine Informationen über den Standarddrucker. Sie können versuchen, die Standarddruckernamen aus der Registrierung abrufen statt, obwohl ich nicht sicher bin, ob es zuverlässig ist:
Set oShell = CreateObject("WScript.Shell")
strValue = "HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows\Device"
strPrinter = oShell.RegRead(strValue)
strPrinter = Split(strPrinter, ",")(0)
WScript.Echo strPrinter
Wie für WMI, es ist wahr, dass einige WMI-Klassen und Klassenmitglieder sind nicht verfügbar ältere Windows-Versionen. Die Eigenschaft Win32_Printer.Default
, die angibt, ob der Drucker der Standarddrucker ist, ist unter Windows 2000/NT nicht vorhanden. Dennoch gibt es eine einfache Abhilfe die Standarddrucker auf diesen Windows-Versionen für die Suche, die für das PRINTER_ATTRIBUTE_DEFAULT
Attribut in jedem Drucker Attribute
bitmask bei der Prüfung besteht:
Const ATTR_DEFAULT = 4
strComputer = "."
Set oWMI = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colPrinters = oWMI.ExecQuery("SELECT * FROM Win32_Printer")
For Each oPrinter in colPrinters
If oPrinter.Attributes And ATTR_DEFAULT Then
Wscript.Echo oPrinter.ShareName
End If
Next
Dieser Code auf neueren Windows-Versionen als gut funktioniert.
Für Details, überprüfen Sie diese Hey, Scripting Guy! Artikel: Is There Any Way to Determine the Default Printer On a Computer?
Darf ich fragen, warum Sie WMI nicht verwenden möchten? – Helen
Mir wurde gesagt, dass einige der Funktionen innerhalb des Skripts möglicherweise nicht kompatibel mit Windows 2000-Computern sind. – Mark