WMI Win32_Printer 未显示在 =>控制面板\所有控制面板项\设备和打印机中
Posted
技术标签:
【中文标题】WMI Win32_Printer 未显示在 =>控制面板\\所有控制面板项\\设备和打印机中【英文标题】:WMI Win32_Printer not showing up in =>Control Panel\All Control Panel Items\Devices and PrintersWMI Win32_Printer 未显示在 =>控制面板\所有控制面板项\设备和打印机中 【发布时间】:2016-06-15 18:38:44 【问题描述】:=>控制面板\所有控制面板项\设备和打印机中有一台本地打印机。我通过单击“删除设备”手动删除了它。并且打印机确实被移除了,不再出现。
问题是,我们有下面的 .net 代码来检查是否安装了打印机。它返回真。如果我们按名称执行“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;
【问题讨论】:
【参考方案1】:经过深入研究,顺便说一句,我的 windows 是 8.1。
1) 问题仍然有效。 (欢迎任何 cmets)。我的猜测是:当我移除打印机时,发生了一些错误,并且当窗口填充打印机列表时,错误会阻止其他打印机出现。
2) 我以前检查打印机安装的方法是有效的。删除打印机时,打印机驱动程序或窗口中一定存在错误/权限问题。
我的解决方案对于这种情况(如果您尝试安装打印机,它说打印机已经存在并且没有显示在打印机列表中),您可以试试这个:
1) 打开windows powershell,运行Get-Printer,它会列出所有的打印机,和控制面板中的打印机列表比较,记住哪一个少了。 Microsoft Get-Printer instruction
2) 使用相同的 powershell,按名称运行 Remove-Printer,删除未显示的打印机。 Microsoft Remove-Printer instruction
3)尝试重新安装打印机。
在我的情况下,在我重新安装打印机然后将其删除后,一切恢复正常。我找不到任何信息可以确认问题和解决方法。但它确实存在。希望它可以帮助一些身体。祝你好运。
【讨论】:
【参考方案2】:Win32_Printer 派生自 CIM_Printer
,而 CIM_LogicalDevice
派生自 CIM_LogicalDevice
。所以点在任何这些表中都有打印机信息的残留物。如果您想确定,请在运行删除代码后检查下表:
CIM_LogicalDevice Win32_PnpEntity
您也可以使用下面提到的查询来删除打印机。我还没有未测试。
$wshNetwork = New-Object -ComObject WScript.Network
$wshNetwork.RemovePrinterConnection("\\prntsvr01\myprinter")
【讨论】:
此案很难重现。如果我再次看到这个案例,我会试试你提供的表格。非常感谢。以上是关于WMI Win32_Printer 未显示在 =>控制面板\所有控制面板项\设备和打印机中的主要内容,如果未能解决你的问题,请参考以下文章
使用应用程序池标识在 IIS 上的 ASP.NET 中查询 Win32_Printer 时权限被拒绝
wmi.WMI().Win32_ComputerSystem()
Win32_Printer 类 PrinterStatus "6 (0x6) Stopped printing" 是啥意思?