WindowsがUSB仮想COMポートにマップするCOMポート番号を変更する方法を知っている人はいますか?これは、デバイスマネージャーを使用して[詳細設定]ボタンをクリックして変更できますが、API、レジストリの変更、またはコマンドライン操作を使用してこれを行うにはどうすればよいですか?
何かアイデアはありますか?
あなたはこの答えが役に立つと思うかもしれません:
WindowsでCOMポートのフレンドリ名を取得するにはどうすればよいですか?
わかりやすい名前を見つけることですが、適切なキーを見つけるための「公式」メカニズムを使用して、レジストリの適切な領域を示していることがわかると思います。
ただし、ポートの割り当てを変更する場合は、comポートデータベースも更新する必要があります-参照: https://msdn.Microsoft.com/en-us/library/ff546481.aspx
同様のことをしなければならなかったとき、リンクされたSOの記事で説明されているメカニズムを使用して適切なデバイスを見つけ、SerialDisplayAdvancedSettings((HWND)NULL、hDeviceInfo、&devInfoData);を呼び出してを表示しました。高度なダイアログを表示し、OSにハードワークを処理させます。
最近では、他の非互換性もある可能性のある、奇妙な「実際ではない」シリアルポート(USBポートなど)に遭遇する可能性がますます高まっています。
COMポート1を110に変更する際のレジストリの変更を監視し、次のキーに変更があったことを確認しました。
[HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM] "\ Device\Serial0" = "COM110"
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\COM名前アービター] "ComDB" = hex(3):FC、7F、00,00,00,00,00,00,00,00,00,00,00,20、 00,00,00,00,00,00、\ 00,00,00,00,00,00,00,00,00,00,00,00
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\ACPI\PNP0501\1\Device Parameters] "PortName" = "COM110"
この変更は、「regedit」を介してレジストリの以下の2つの手順で行われます。
名前を変更する:最初のステップでは、以下のキーを変更する必要があります:1.1。 「HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\XXX」では、そのXXXがデバイス名です。各アイテムをトレースして「FriendlyName」を見つけ、必要に応じて変更する必要があります(例:「USBシリアルポート(6)」)。 1.2。前のキーでも、アイテムをトレースして「PortName」を見つけ、それをポート番号に変更する必要があります(例:「COM6」)
ポート番号を変更します。「HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\COMName Arbiter」には、すでに割り当てられているCOMポートのビットマスクである「ComDB」があります。この値は、COMポートに基づいて変更する必要があります。注:最初のバイトはCOM8〜1を制御し、2番目のバイトはCOM16〜9を制御し、3番目のバイトはCOM24〜COM17を制御します。値= 0は、ポートが使用されていないことを意味します。値= 1は、ポートが占有されていることを意味します。
手に負えない、私はそれを行う方法がわかりませんが、これが私がすることです:
My Computer/Device Managerメソッドを使用して、61などのありそうもないCOMポートを割り当てます。次に、regeditを使用してCOM61を検索し、DeviceManagerの動作を確認します。
レジストリのどこかでこれらすべてを見たことがあることは知っていますが、ナレッジベースをすばやく検索しても答えは見つかりませんでした。