我们的一些客户告诉我们,在某些情况下会出现以下错误:
System.Management.ManagementException:Błąd dostawcy。
在 System.Management.ManagementException.ThrowWithExtendedInfo(ManagementStatus errorCode)
在 System.Management.ManagementObjectCollection.ManagementObjectEnumerator.MoveNext()
尝试循环通过 System.Mamangment.ManagementObjectSearcher 对象的 Get() 方法返回的集合时生成错误。
这是我的方法的代码:
private bool PrinterExists(string printerName)
{
bool retVal = false;
SelectQuery q = new SelectQuery("select caption from win32_printer");
using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(q))
{
foreach (ManagementObject printer in searcher.Get())
{
if(printer["Caption"].ToString() == printerName)
{
retVal = true;
break;
}
}
}
return retVal;
}
似乎该问题仅出现在 Windows XP 上。我知道的唯一解决方法是重建 WMI 数据库。它有时会有所帮助,但不幸的是并非总是如此。
谁能告诉我这个错误的原因是什么,我该如何解决?