Изменить COM-порт через реестр, командную строку или программное обеспечение? - PullRequest
8 голосов
/ 05 января 2010

Кто-нибудь знает, как изменить номер COM-порта, который Windows отображает на виртуальный COM-порт USB? Вы можете изменить это с помощью диспетчера устройств и нажать кнопку «Дополнительно» ... но как это сделать с помощью API, изменения реестра или операции командной строки?

Есть идеи, пожалуйста?

Ответы [ 4 ]

8 голосов
/ 17 октября 2012

Я наблюдал за изменениями реестра во время смены COM-порта 1 на 110 и обнаружил изменения в следующих ключах:

[HKEY_LOCAL_MACHINE \ HARDWARE \ DEVICEMAP \ SERIALCOMM] "\ Device \ Serial0" = "COM110"

[HKEY_LOCAL_MACHINE \ SYSTEM \ ControlSet001 \ Control \ Арбитр имени COM] "ComDB" = шестигранный (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 \ Параметры устройства] "PortName" = "COM110"

6 голосов
/ 05 января 2010

Может оказаться полезным этот ответ:

Как получить понятное имя COM-порта в Windows?

Речь идет о поиске понятного имени, но я думаю, вы обнаружите, что оно указывает на правильную область реестра, используя «официальный» механизм для поиска правильного ключа.

Однако, если вы измените назначение порта, вам также следует обновить базу данных com-порта - см .: https://msdn.microsoft.com/en-us/library/ff546481.aspx

Когда мне пришлось сделать что-то подобное, я нашел подходящее устройство, используя механизм, описанный в связанной статье SO, и затем назвал SerialDisplayAdvancedSettings ((HWND) NULL, hDeviceInfo, & devInfoData); отобразить расширенный диалог и позволить ОС справиться с тяжелой работой.

В настоящее время вы все чаще сталкиваетесь с странными «ненастоящими» последовательными портами (например, USB-портами), которые могут иметь другие несовместимости, о которых вам тоже следует опасаться.

1 голос
/ 05 января 2010

Вне руки, я не знаю, как это сделать, но вот что я бы сделал:

Используйте метод «Мой компьютер / Диспетчер устройств», чтобы назначить некоторый маловероятный com-порт, например 61. Затем используйте regedit для поиска COM61 ​​и посмотрите, что сделал Диспетчер устройств.

Я знаю, что где-то видел все это в реестре, но быстрый поиск в базе знаний не дал ответов.

0 голосов
/ 06 марта 2019

Это изменение выполняется в два следующих шага в реестре через «regedit»:

  1. Изменить имя: На первом этапе вам нужно изменить следующие ключи: 1.1. В «HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Enum \ XXX» это XXX - имя вашего устройства. Вам необходимо отследить каждый элемент, чтобы найти «FriendlyName», а затем изменить его по своему усмотрению (например, «Последовательный порт USB (6)»). 1.2. В предыдущем ключе снова необходимо отследить элемент, чтобы найти «PortName» и изменить его на номер порта (например: «COM6»)

  2. Изменить номер порта: В "HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ COM Name Arbiter" вы можете найти "ComDB", который является битовой маской уже выделенных COM-портов. Это значение должно быть изменено в зависимости от ваших COM-портов. Обратите внимание: первый байт контролирует COM8 ~ 1, второй байт контролирует COM16 ~ 9, третий байт контролирует COM24 ~ COM17 и так далее. Значение = 0 означает, что порт не используется. Значение = 1 означает, что порт занят.

...