代码之家  ›  专栏  ›  技术社区  ›  user995219

如何查询Win32_打印机以查找已安装的远程打印机?(无效查询)

  •  -1
  • user995219  · 技术社区  · 6 年前

    尝试从Win32_打印机获取本地安装的远程打印机信息时,收到无效的查询错误。

    string query = "SELECT * from Win32_Printer WHERE Name = '\\\\Server\\PrinterName'";
    
    ManagementScope scope = new ManagementScope(ManagementPath.DefaultPath);
    SelectQuery objQuery = new SelectQuery(query);
    using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, objQuery))
    using (ManagementObjectCollection coll = searcher.Get())
    {
       foreach (ManagementObject printer in coll)
       {
          foreach (PropertyData property in printer.Properties)
             {
                result.Add(property.Name, property.Value);
             }
        }
    }
    

    我知道名字了 “\\\\Server\\PrinterName” 从…起 System.Drawing.Printing.PrinterSettings.Installed打印机。

    "SELECT * from Win32_Printer WHERE Name LIKE '%PrinterName'"
    

    它可以工作,但我如何查询全名?

    1 回复  |  直到 6 年前
        1
  •  0
  •   user995219    6 年前

    正如@JeroenMostert的评论所述,“\”字符在c#和wmi中都是转义字符,因此解决方案是将它们加倍。