利用可能なシリアル ポートをスキャンして特定のデバイスを検出するプログラム (環境は Windows 7 Enterprise 32 ビット) があります。
しかし、多くのマシンでは、シリアル ポートの 1 つにプリンタ ドライバが設定されています (これは、実際にそのポートにプリンタが接続されていることを意味するものではありません)。この場合、スキャン プログラムはそのポートを開いてデバイスを検索できません。
Windows XP では、スキャンを開始する前にスプーラを停止するだけで、プリンタ ドライバによって割り当てられたシリアル ポートのロックを解除できました。Windows 7 では、これは機能しません。COMx にプリンタが構成されていて、スプーラを停止すると、COMx を開くことができません。
プロセスロックをチェックしましたプロセスエクスプレッション: スプーラの実行中に spoolsv.exe プロセスによって割り当てられたポート結果と、スプーラが停止しているときに誰によっても割り当てられなかった結果。
プリンターによって割り当てられたポートを一時的にロック解除する方法をご存知ですか?
私が見つけた回避策は、スキャン前にすべてのシリアル プリンターのポートを FILE: に変更し、スキャンが完了したら COMx に戻すことですが、もっと簡単な解決策があるのではないかと思います。
答え1
私も同様の問題を抱えていましたが、シリアル ポートの詳細プロパティ (デバイス マネージャー経由) でポート名を COM1 から COM4 に変更することで解決しました。
その後、すべて正常に動作しました。一部のプログラムでは、名前が変更されたポートが引き続き COM1 として表示されますが、ポートにアクセスできるようになりました。