Как запросить Win32_Printer для установленного удаленного принтера? (Неверный запрос) - PullRequest
0 голосов
/ 17 января 2019

При попытке получить локально установленную информацию об удаленном принтере из Win32_Printer появляется ошибка Invalid Query.

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);
         }
    }
}

Я получаю имя \\\\ сервер \\ PrinterName ' от System.Drawing.Printing.PrinterSettings.InstalledPrinters.

Если я изменю запрос на

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

это работает, но как я могу запросить полное имя?

1 Ответ

0 голосов
/ 24 января 2019

Как отмечает @JeroenMostert, символ '\' является escape-символом в c # и wmi, поэтому решение состоит в том, чтобы удвоить их.

...