Windows 7
 Computer >> コンピューター >  >> システム >> Windows 7

WindowsでCOMポート番号をクリーンアップ・リセットする方法を徹底解説

パソコンに新しいCOMデバイスやUSBデバイス(USBモデム、スマートフォン、Bluetoothアダプター、USB-シリアル変換ケーブルなど)を接続すると、Windowsはプラグアンドプレイ機能でこれを自動検出し、1〜255の範囲内でCOMポート番号(COM1、COM2、COM3など)を割り当てます。同じデバイスを再接続した場合には、以前に予約されたCOM(CommunicationSerial)ポート番号がそのまま使われ、新規デバイスには空いている最初の番号が振られます。

また、外部デバイスを1台接続するだけで、複数のCOMポートが同時に作成されるケースも少なくありません。筆者の環境では、Bluetoothアダプターを接続しただけで10個もの新しいCOMポートがシステムに追加されてしまいました。

ここで問題になるのが、古いアプリケーションの存在です。レガシーなソフトウェアの中には、2桁までのCOMポート番号しか扱えず、COM100以上のポートに対応していないものがあります。最悪の場合、COM1〜COM9でしか動作しないプログラムも存在します。目的のデバイスに大きな番号が割り当てられてしまった場合、予約済みCOMポートの番号付けをリセットしたり、不要なポート割り当てを削除したりすることはできるのでしょうか。

  • WindowsでデバイスのCOMポート番号を変更する方法
  • シリアルCOMポートを使用しているプロセスを特定する方法
  • WindowsレジストリでCOMポート番号をリセットする方法

WindowsでデバイスのCOMポート番号を変更する方法

Windowsでは、デバイスに割り当てられたCOMポート番号を手動で変更できます。必要なCOMポートがすでに使用中で、それを解放したい場合の手順を見ていきましょう。

  1. devmgmt.mscコマンドを実行してデバイスマネージャーを開きます。
  2. メニューから「表示」→「非表示のデバイスの表示」を選択します。WindowsでCOMポート番号をクリーンアップ・リセットする方法を徹底解説
  3. ポート(COM と LPT)」を展開し、一覧から対象のデバイスを探します。
  4. ポートの設定」タブを開き、「詳細設定」ボタンをクリックします。
  5. 現在割り当てられているCOMポート番号は、「COMポート番号」フィールドで確認できます。
  6. 変更するには、ドロップダウンリストを開いて希望するCOMポート番号を選択します。WindowsでCOMポート番号をクリーンアップ・リセットする方法を徹底解説

ただし実際には、番号の小さいCOMポートがすべて使用中のため、ハードウェアのプロパティから別のポート番号へ変更できないことがほとんどです。そのような場合は、COMポートの予約自体を解除することを試みましょう。

  1. ポート(COM と LPT)」ブランチを展開し、目的のCOMポート番号がどのデバイスに割り当てられているかを確認します(アイコンが薄く表示されている場合、そのCOMポートは予約済みですが、デバイスは現在接続されていないことを意味します)。
  2. 対象を右クリックして「デバイスのアンインストール」を選択します。WindowsでCOMポート番号をクリーンアップ・リセットする方法を徹底解説
  3. これで解放されたCOMポートを別のデバイスに割り当てられます。対象デバイスのプロパティを再度開き、「ポートの設定」→「詳細設定」と進み、ドロップダウンリストから空いているCOMポートを選択してください。WindowsでCOMポート番号をクリーンアップ・リセットする方法を徹底解説

とはいえ、この方法ですべてのケースで使用中のCOMポートを解放できるわけではありません。

Windows上で使用中のCOMポートの一覧は、PowerShellを使って取得できます。

Get-WMIObject Win32_SerialPort | Select-Object Name,DeviceID,Description

デバイス名を指定して、特定デバイスのCOMポート番号を調べることも可能です。例えば次のように実行します。

Get-WMIObject Win32_SerialPort | Where-Object { $_.Name -like "*Arduino*"} | select name, deviceid

または

Get-WMIObject Win32_SerialPort | Where-Object { $_.Name -like "*GPS*"} | select name, deviceid

WindowsでシリアルCOMポートを使用しているプロセスを特定する方法

Windowsや実行中のプログラム(プロセス)が使用しているCOMポートは、そのままでは解放できません。まず、そのCOMポートを使用しているプロセスを停止する必要があります。どのプロセスが特定のCOMポート番号を掴んでいるのかを調べるには、Sysinternals製のProcess Explorerツールが便利です(https://docs.microsoft.com/en-gb/sysinternals/downloads/process-explorer)。

まず、COMポートを使用しているサービス名を表示します。PowerShellで次のコマンドを実行してください。

get-pnpdevice -class Ports -ea 0 | Select Name, PNPDeviceID, Status, Service

WindowsでCOMポート番号をクリーンアップ・リセットする方法を徹底解説

各COMポートのサービス名は「Service」列に表示されます。例えばCOM2の場合はSerialです。続いて、Process Explorerを管理者として起動し、メニューから「Find」→「Find Handle or DLL」を選択します。「Handle or DLL substring」欄に、先ほど確認したServiceの値(この例ではSerial)を入力します。

するとProcess Explorerが、現在そのCOMポートを使用しているプロセス名を表示します。COMポートを解放するには、該当するプロセスやプログラムを終了させてください。

WindowsでCOMポート番号をクリーンアップ・リセットする方法を徹底解説

WindowsレジストリでCOMポート番号をリセットする方法

使用中のCOMポートに関する情報は、レジストリキーHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\COM Name Arbiter配下のCommDB値に保存されています。

  1. レジストリエディター(regedit.exe)を開き、上記のキーへ移動します。WindowsでCOMポート番号をクリーンアップ・リセットする方法を徹底解説
    重要:作業を始める前に、必ずこのレジストリキーのバックアップを作成してください(「ファイル」→「エクスポート」)。問題が発生した場合でも、元のCOMポート構成を復元できます。
  2. ComDB値はバイナリ形式で、Windows内で予約されているCOMポートの一覧を表します。各ビットが対応するポート(1〜255)の状態を示しています。例えば、COM3だけの予約を残したい場合、ComDBの16進数の値は04(0000 0100)となります。WindowsでCOMポート番号をクリーンアップ・リセットする方法を徹底解説
    重要:このパラメーターに余計なビットを追加しないよう十分注意してください。誤って編集すると、システムがブルースクリーン(BSOD)でクラッシュする可能性があります。
  3. すべてのCOMポートの割り当てをリセットしたい場合は、ComDBの値を0に変更します。WindowsでCOMポート番号をクリーンアップ・リセットする方法を徹底解説
    補足:Windowsに接続されているCOMポートの完全な一覧は、レジストリキーHKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMMで確認できます。SERIALCOMM以下のエントリは、基盤となるデバイスが接続され準備できている間のみ存在します。このサブキーはHARDWAREキーの一部であり、システム起動のたびに再作成されます。WindowsでCOMポート番号をクリーンアップ・リセットする方法を徹底解説
  4. レジストリキーHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Portsには、割り当て済みの全COMポート番号の一覧が含まれています。ここで不要なポート予約を削除できます。この例ではCOM3だけを残し、それ以外のポートを削除します。WindowsでCOMポート番号をクリーンアップ・リセットする方法を徹底解説
  5. すべての外部デバイスを取り外し、パソコンを再起動します。
  6. 再起動後、必要な順序でデバイスを接続し直し、USB-シリアル変換器などを再インストールします。検出されたすべてのCOMポートデバイスはシステムによって自動認識され、連続したCOMポート番号が割り当てられます。

また、予約済みCOMポートのクリーンアップには、以下の無料ツールを利用する方法もあります。

  • COM Name Arbiter Tool:COMポートの予約をリセットし、使用中のCOMポート番号を調べるためのツールです。ダウンロードして管理者として実行し、解放したいCOMポートを選択して「Clear unused Reservations」および「Remove non-present devices」をクリックします。WindowsでCOMポート番号をクリーンアップ・リセットする方法を徹底解説
  • Device Cleanup Tool:過去に接続されたデバイスの情報をレジストリ(HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum)から検索し、未使用デバイスの削除とCOMポート予約のクリアを行えるユーティリティです。
  1. Windows 11を出荷時設定にリセット(初期化)する方法

    Windows 11のファクトリーリセット(出荷時設定への復元)は、PC内のデータをまっさらにできる強力な機能です。さまざまなWindowsの不具合に対する最終手段として活用されるほか、PCを新品同様の状態で使い直したいとき、特に他の解決策では対応できないケースにも役立ちます。 ご安心ください。手順はそれほど複雑ではなく、所要時間も数分程度です。それでは早速、出荷時リセットの手順を見ていきましょう。 Windows 11を出荷時設定にリセットする手順 まず、リセット作業を始める前に、バックアップを作成しておくことを強くおすすめします。万が一途中で問題が発生しても、バックアップがあれば大切なデー

  2. Windows 11でWindowsセキュリティをリセットする3つの簡単な方法

    Windows セキュリティは、Windows 11 デバイスと個人情報を守るための総合的なセキュリティセンターです。しかし、アプリが不具合を起こしたり、稀には起動しなくなったりすることもあります。そのような場合は、Windows セキュリティをリセットしましょう。リセットを実行すると、すべての設定が工場出荷時の既定値に戻ります。リセット後のアプリは、最初にパソコンで起動したときとまったく同じ状態で動作・表示されます。アプリの再インストールに似ていますが、リセットの方が短時間で完了し、ダウンロードし直す必要もありません。ここでは、Windows 11 の Windows セキュリティをリセット