web-dev-qa-db-ja.com

プログラムでCOMポート番号を変更する

デバイスマネージャで、シリアルデバイスを右クリックし、[ポート設定]タブに移動し、[詳細設定]をクリックして、ドロップダウンメニューからCOMポート番号を変更できます。

多数のPCでこの手順を自動化する必要があります。このプロセスをスクリプト化する方法、またはプログラムで実行する方法はありますか?

5
Matthew King

この質問はおそらく stackoverflow で最もよく尋ねられます。そうは言っても、 ComDBReleasePort および ComDBClaimPortCOMポートデータベース 。ただし、COMポートの割り当てをプログラムで変更することは、必ずしもベストプラクティスとは見なされません。たとえば、さらに2つの同時アプリケーションが同じCOM割り当てを取得するために戦っている場合はどうなりますか?

Windowsは、正当な理由でCOMポート番号を動的に割り当てます。理想的には、アプリケーションは、必要な特定のCOMポートを検索するように作成する必要があります。これは、ポーリングを介して、または Windows Management Interface(WMI) を使用して実行できます。

他の誰かが書いたアプリケーションを参照していて、他の誰かのプログラム設計(またはその欠如)に固執している場合は、 の追加を検討することをお勧めします。レジストリを変更するバッチスクリプト キーの下のHKLM\Hardware\DEVICEMAP\SERIALCOMM起動時に、新しい値が再起動の間に保持される可能性が低いため。

この最後のオプションがどれだけうまく機能するかはわかりませんが、あなたが深刻な場合 PowerShell または- Python ユーザーの場合、理論的にはいずれかのスクリプト言語を使用して、応答の冒頭に記載されているAPIに1回直接アクセスできます。 COMポートの再割り当て。

3
Jim Fell