WMI Win32_Printer未显示在=>控制面板\所有控制面板项\设备和打印机中

时间:2016-06-15 18:38:45

标签: .net wmi printers

在>控制面板\所有控制面板项目\设备和打印机中有一台本地打印机。我通过点击"删除设备"手动删除它。并且打印机确实被移除了,不再出现了。

问题是,我们在下面有.net代码来检查是否安装了打印机。它返回true。如果我们选择SELECT * FROM Win32_Printer'那么打印机似乎仍然存在。按名称。

问题:

1)有人可以给我更详细的信息,为什么本地打印机记录仍然存在?

2)我可以信任下面的代码,或者我需要更多条件来检查打印机安装吗?

ManagementScope oManagementScope = new ManagementScope(ManagementPath.DefaultPath);
oManagementScope.Connect();
SelectQuery oSelectQuery = new SelectQuery();
oSelectQuery.QueryString = @"SELECT * FROM Win32_Printer WHERE Name = '" +  sPrinterName.Replace("\\", "\\\\") + "'";
using(ManagementObjectSearcher oObjectSearcher = new ManagementObjectSearcher(oManagementScope, oSelectQuery))
{
    using(ManagementObjectCollection oObjectCollection = oObjectSearcher.Get())
    {
        return oObjectCollection.Count > 0;
    }
}

2 个答案:

答案 0 :(得分:0)

经过一番深入研究,BTW,我的窗户是8.1。

1)问题仍然有效。 (欢迎任何评论)。我的猜测是:当我移除打印机时,发生了一些错误,并且错误会阻止其他打印机显示,而窗口会填充打印机列表。

2)我以前检查打印机安装的方式是有效的。移除打印机时,打印机驱动程序或窗口中必定存在错误/权限问题。

我的解决方案对于这种情况(如果您尝试安装打印机,它说打印机已存在且未显示在打印机列表中),您可以尝试这样做:

1)打开windows powershell,运行Get-Printer,列出所有打印机,将其与控制面板中的打印机列表进行比较,记住缺少哪一台。 Microsoft Get-Printer instruction

2)使用相同的PowerShell,按名称运行Remove-Printer,删除未显示的打印机。 Microsoft Remove-Printer instruction

3)尝试重新安装打印机。

在我的情况下,我重新安装打印机然后将其删除后,一切恢复正常。我无法找到任何可以确认问题和解决方法的信息。但确实存在。希望它可以帮助一些身体。祝你好运。

答案 1 :(得分:0)

Win32_Printer派生自CIM_Printer,派生自CIM_LogicalDevice。因此,在某些方面,在任何这些表中都存在打印机信息的残余。如果您想确定,请在运行删除代码后检查下面提到的表格:

  
      
  • CIM_LogicalDevice
  •   
  • Win32_PnpEntity
  •   

您还可以使用下面提到的查询删除打印机。我还没有没有测试

$wshNetwork = New-Object -ComObject WScript.Network
$wshNetwork.RemovePrinterConnection("\\prntsvr01\myprinter")