3

我正在尝试使用 WMI 获取连接到 Windows XP 机器的硬件打印机列表。我想要的从 Win32_Printers 获取列表不同,因为我只想获取物理上以盒子形式存在的打印机,摆脱所有“打印机噪音”,如“发送到 OneNote 驱动程序”、“微软共享传真驱动程序”、“Microsoft XPS 文档编写器”等...

通过使用 WMICodeCreator 工具,我发现我不能依赖本地/网络属性为真(截至目前,我的网络打印机告诉我它的网络属性为假......)所以我想知道是否有是另一种获取正确信息的方法吗?

如果我可以将 USB 打印机连接到计算机,则可以加分:Win32_USBHub 属性在这里并没有真正的帮助,因为我无法获得“打印支持”的正确描述:)

4

2 回答 2

1

我知道这是一个非常古老的帖子,但我遇到了相同的要求,并认为我会将我的最终结果发布给下一个人。

Dim oWMI, colPrinters, oItem, oPrinter
Set oWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
Set colPrinters = oWMI.ExecQuery("Select * From Win32_Printer where PrintProcessor <> 'winprint'")

For Each oPrinter in colPrinters
    If oPrinter.Attributes And 64 Then
        Wscript.Echo oPrinter.Name
    End If
Next
于 2018-03-02T09:39:34.133 回答
0

我认为只有物理打印机使用unidrv.dll

string query = "select * from Win32_PrinterDriver";
ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);
ManagementObjectCollection collection = searcher.Get();

foreach (ManagementObject obj in collection)
{
    Console.WriteLine(obj["Name"].ToString());
    Console.WriteLine(obj["DriverPath"].ToString());
    Console.WriteLine();
}
于 2012-12-20T09:03:03.927 回答