Ich habe ein Programm (Umgebung ist Windows 7 Enterprise 32 Bit), das verfügbare serielle Ports scannt, um ein bestimmtes Gerät zu erkennen.
Auf vielen Rechnern ist jedoch ein Druckertreiber an einem der seriellen Ports konfiguriert (das bedeutet jedoch nicht, dass tatsächlich ein Drucker an diesen Port angeschlossen ist). In diesem Fall kann mein Scanprogramm diesen Port nicht öffnen, um nach dem Gerät zu suchen.
Unter Windows XP reichte es aus, den Spooler vor dem Scannen zu stoppen, um die von den Druckertreibern zugewiesenen seriellen Ports freizugeben. Unter Windows 7 funktioniert dies nicht mehr. Wenn ich einen Drucker auf COMx konfiguriert habe und den Spooler stoppe, kann COMx nicht geöffnet werden.
Ich habe Prozesssperren überprüft mitProcExp: Port-Ergebnisse werden vom Prozess spoolsv.exe zugewiesen, wenn der Spooler ausgeführt wird, und Ergebnisse, die von niemandem zugewiesen werden, wenn der Spooler gestoppt ist.
Irgendeine Idee, wie man von Druckern zugewiesene Ports vorübergehend entsperren kann?
Ich habe eine Problemumgehung gefunden, die darin besteht, vor dem Scannen den Port jedes seriellen Druckers auf FILE: zu ändern und nach Abschluss des Scannens wieder auf COMx, aber ich frage mich, ob es eine einfachere Lösung gibt.
Antwort1
Ich hatte ein ähnliches Problem, das gelöst wurde, indem ich in den erweiterten Eigenschaften der seriellen Schnittstelle (über den Geräte-Manager) den Portnamen von COM1 in COM4 geändert habe.
Danach hat alles einwandfrei funktioniert. Einige Programme sehen den umbenannten Port zwar immer noch als COM1, können nun aber auf den Port zugreifen.