首页 文章

如何使用WMI检索物理打印机列表?

提问于
浏览
3

我喜欢和从Win32_Printers获取列表不一样,因为我只想让物理上存在的打印机作为盒子,摆脱所有"Send to OneNote Driver",如"Send to OneNote Driver","Microsoft Shared Fax Driver","Microsoft XPS Document Writer"等...

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

如果我可以将usb打印机连接到计算机上的奖励积分:Win32_USBHub属性没有't really help here since i can' t得到"Printing Support" :)的正确描述

2 回答

  • 0

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

    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
    
  • 1

    我认为只是物理打印机使用 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();
    }
    

相关问题