Как очистить или сбросить номера COM-портов в Windows
Когда вы подключаете новое COM-устройство или USB-устройство к компьютеру (USB-модем, мобильный телефон, адаптер Bluetooth, преобразователи последовательного порта в USB и т. д.), Windows обнаруживает его с помощью Plug-n-Play и назначает ему COM. номер порта в диапазоне от 1 до 255 (COM1, COM2, COM3 и т. д.). Если это устройство снова подключено, зарезервированный COM (
Communication, или
Serial) ему присвоен номер порта. Новое устройство получает первый свободный номер COM-порта. Часто бывает, что при подключении внешние устройства создают сразу несколько COM-портов. В моем случае после подключения Bluetooth-адаптера 10!!! в системе появились новые COM-порты.
Ряд устаревших приложений могут обращаться только к двузначным номерам COM-портов и не будут работать с COM100 и выше. В худшем случае эти программы работают только с портами COM1-COM9. Что делать, если устройство имеет больший номер COM-порта? Можно ли сбросить нумерацию зарезервированных COM-портов и удалить назначенные порты?
Как изменить номер COM-порта устройства в Windows?
В Windows вы можете вручную изменить номер COM-порта, назначенный устройству. Предположим, необходимый COM-порт уже занят, и вы хотите попробовать его освободить.
-
Откройте диспетчер устройств, запустив команду
devmgmt.mscкоманда;
В меню выберите Вид->Показать скрытые устройства;
Затем разверните Порты (COM и LPT) и найдите в списке свое устройство;
Перейдите на вкладку Настройки порта и нажмите кнопку Дополнительно;
Текущий номер COM-порта, назначенный устройству, можно найти в поле Номер COM-порта;
Чтобы изменить его, откройте раскрывающийся список и выберите номер COM-порта, который вы хотите установить.
Но чаще всего в свойствах оборудования изменить назначенный номер COM-порта на другой не получится, так как все «нижние» COM-порты уже заняты. В этом случае нужно попробовать снять резервирование COM-порта.
-
Разверните ветку Порты (COM & LPT), найдите, какой номер COM-порта вам назначен (бледный значок означает, что этот COM-порт назначен, но это устройство в данный момент не подключен);
Щелкните его правой кнопкой мыши и выберите Удалить;
Теперь вы можете назначить освободившийся COM-порт другому устройству. Еще раз откройте свойства вашего устройства, перейдите на вкладку Настройки порта -> Дополнительно. Затем перейдите на вкладку Порт Настройки и нажмите Дополнительно. В раскрывающемся списке выберите свободный COM-порт.
Однако этот метод не позволяет освободить занятой COM-порт во всех случаях.
Вы можете получить полный список занятых COM-портов в Windows с помощью 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Узнайте, какой процесс использует последовательный COM-порт в Windows
Вы не сможете освободить COM-порт устройства, которое используется Windows или запущенной программы (процесса). Во-первых, вам нужно остановить процесс, который в данный момент использует COM-порт. Вы можете использовать инструмент Process Explorer (от Sysinternals), чтобы узнать имя процесса по определенному номеру COM-порта (https://docs.microsoft.com/en-gb/sysinternals/downloads /процесс-проводник).
Во-первых, вам нужно отобразить имя службы, использующей COM-порт. Запустите команду PowerShell:
get-pnpdevice -class Ports -ea 0| Select Name, PNPDeviceID, Status, ServiceИмя службы конкретного COM-порта отображается в столбце Сервис. Например, для COM2 это Serial. Теперь вам нужно запустить Process Explorer от имени администратора и выбрать в меню Найти -> Найти дескриптор или DLL . В строке Подстрока Handle или DLL введите полученное ранее значение Service. В нашем примере это
SerialОбозреватель процессов должен показать имя процесса, который в данный момент использует ваш COM-порт. Чтобы освободить COM-порт, завершите процесс или программу.
Сброс номеров COM-портов в реестре Windows
Информация об используемых COM-портах хранится в параметре реестра CommDB в ключе реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\COM Name Arbiter.
Откройте редактор реестра (
regedit.exe) и перейдите к указанному выше ключу реестра;
Важно! Мы настоятельно рекомендуем вам создать резервную копию этого ключа реестра (Файл -> Экспорт), прежде чем что-либо делать. Если что-то пойдет не так, вы можете восстановить исходную конфигурацию COM-порта.
Значение параметра ComDB в двоичном формате определяет список COM-портов, зарезервированных в Windows. Каждый бит определяет состояние соответствующего порта (от 1 до 255). Например, если вам нужно оставить резервирование только для COM3, шестнадцатеричное значение ComDB будет равно 04 (0000 0100);
Важно! Будьте очень внимательны и не добавляйте к параметру никаких дополнительных битов, иначе система начнет вылетать в BSOD.
Если вам необходимо сбросить все привязки COM-порта, измените значение ComDB на 0;
Примечание. Полный список подключенных COM-портов в Windows можно просмотреть под ключом реестра HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM. Записи реестра в разделе SERIALCOMM могут присутствовать только тогда, когда базовые устройства подключены и готовы. Этот подраздел является частью раздела HARDWARE и создается заново при каждом запуске системы.
Раздел реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Ports содержит список всех назначенных номеров COM-портов. Вы можете удалить все ненужные резервирования портов. В нашем примере мы оставим только COM3 и удалим остальные порты;
Отключите все внешние устройства и перезагрузите компьютер;
После перезагрузки подключите устройства в необходимом порядке, переустановите преобразователи USB-последовательный и т.д. Все обнаруженные устройства COM-порта будут автоматически обнаружены системой и им присвоены последовательные номера COM-портов.
Вы также можете использовать следующие бесплатные инструменты для очистки зарезервированных COM-портов:
Инструмент арбитра имен COM - этот инструмент может помочь вам сбросить резервирование COM-портов и найти используемые номера COM-портов. Загрузите инструмент и запустите его от имени администратора. Выберите COM-порты, которые вы хотите освободить, и нажмите Очистить неиспользуемые резервирования и Удалить несуществующие устройства;
Инструмент очистки устройства - утилита используется для поиска в реестре ранее подключенных устройств (по ключу реестра
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum), удалите неиспользуемые устройства и очистите резервирование COM-порта.











