colección La WshNetwork.EnumPrinterConnections
no proporciona ninguna información sobre la impresora por defecto. Usted puede tratar de recuperar el nombre de la impresora por defecto del registro en su lugar, aunque no estoy seguro si es fiable:
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
En cuanto a WMI, es cierto que algunas clases WMI y los miembros de la clase no están disponibles en versiones anteriores de Windows. Por ejemplo, la propiedad Win32_Printer.Default
que indica si la impresora es la predeterminada, no existe en Windows 2000/NT. Sin embargo, hay una solución sencilla para encontrar la impresora predeterminada en las versiones de Windows, que consiste en la comprobación para el atributo PRINTER_ATTRIBUTE_DEFAULT
en Attribute
máscara de bits de cada impresora:
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
Este código funciona en las versiones posteriores de Windows también.
Para obtener más información, consulte este ¡Hola, tipo de scripting! artículo: Is There Any Way to Determine the Default Printer On a Computer?
¿Puedo preguntar por qué no desea utilizar WMI? – Helen
Me dijeron que algunas de las funciones dentro del script pueden no ser compatibles con las máquinas con Windows 2000. – Mark