2016-06-15 20 views
0

Es war ein lokaler Drucker in => Systemsteuerung \ Alle Systemsteuerung Elemente \ Geräte und Drucker. und ich löschte es manuell, indem ich auf "Gerät entfernen" klicke. und der Drucker wurde entfernt und erschien nicht mehr.WMI Win32_Printer nicht angezeigt in => Systemsteuerung Alle Systemsteuerung Elemente Geräte und Drucker

die Frage ist, haben wir. NET-Code unten zu überprüfen, ob ein Drucker installiert ist oder nicht. es kehrt wahr zurück. Es scheint, dass der Drucker noch existiert, wenn wir 'SELECT * FROM Win32_Printer' nach Namen auswählen.

Fragen:

1) kann mir jemand mehr Details geben, warum der lokale Drucker Datensatz existiert noch?

2) kann ich dem folgenden Code vertrauen, oder brauche ich möglicherweise mehr Bedingungen, um die Druckerinstallation zu überprüfen?

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

Antwort

0

nach einigen tiefen Forschung, BTW, ist meine Windows 8.1.

1) Frage noch gültig. (willkommen Kommentare). Meine Vermutung wäre: Als ich den Drucker entfernte, trat ein Fehler auf, und der Fehler blockiert andere Drucker, während Windows die Druckerliste auffüllt.

2) Die Art und Weise, wie ich die Druckerinstallation überprüft habe, ist gültig. Beim Entfernen des Druckers muss im Druckertreiber oder in Windows ein Fehler/Berechtigungsproblem auftreten.

meine Lösung für diese Situation (wenn Sie einen Drucker zu installieren versuchen, es sagt der Drucker bereits vorhanden ist und nicht in der Druckerliste zeigt nach oben), können Sie dies versuchen:

1) offen Windows Powershell, führen Sie Get-Printer, es alle Drucker auflisten, vergleichen Sie es mit der Druckerliste in der Systemsteuerung, daran erinnern, welche fehlt. Microsoft Get-Printer instruction

2) die gleiche Powershell verwenden, führen Remove-Drucker mit Namen, entfernen Sie den Drucker nicht angezeigt. Microsoft Remove-Printer instruction

3) versuchen, den Drucker neu zu installieren.

in meinem Fall, nachdem ich den Drucker neu installieren und dann löschen, alles wieder normal. Ich konnte keine Informationen finden, um das Problem und die Problemumgehung zu bestätigen. aber es existiert. Ich hoffe, es kann einem Körper helfen. Viel Glück.

0

Win32_Printer ist von CIM_Printer abgeleitet, die von CIM_LogicalDevice abgeleitet ist. Es muss also darauf hingewiesen werden, dass in diesen Tabellen noch Reste von Druckerinformationen vorhanden sind. Wenn Sie sicherstellen möchten, überprüfen Sie unten genannten Tabellen in nach dem Löschen Code ausgeführt wird:

  • CIM_LogicalDevice
  • Win32_PnpEntity

Sie auch unten genannten Abfrage verwenden können, um den Drucker zu löschen .Ich habe nicht getestet es noch nicht.

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

ist es schwierig, den Fall zu reproduzieren. Wenn ich den Fall erneut sehe, werde ich die von Ihnen bereitgestellten Tabellen ausprobieren. Danke vielmals. –