Блог

В этой статье расскажем, как очистить занятые COM порты в Windows и освободить зарезервированные порты для новых подключаемых устройств.
Когда вы подключаете к компьютеру новое COM или некоторые USB устройства (например, USB модем, мобильный телефон, Bluetooth адаптер, конвертер последовательных портов в USB и т.п.), Windows определяет его через механизм Plug-n-Play и назначает ему номер COM порта в диапазоне от 1 до 255 (COM1, COM2, COM3 и т.д.). При повторном подключении этого же устройства ему назначается тот же номер COM порта, который был зарезервирован ранее. Новым устройствам выдаётся первый незанятый номер COM порта. В некоторых случаях внешние устройства могут создавать сразу несколько COM портов.

Приобрести оригинальные ключи активации Windows всегда можно у нас в каталоге от 1099 ₽

Проблема высоких номеров COM портов

Ряд приложений, особенно устаревших, могут адресовать только двухзначные номера COM портов и отказываться работать с COM100 и выше. Или они могут видеть только порты COM1-COM9. Что делать, если подключённое устройство получило высокий номер COM порта? В этой статье рассмотрим, как сбросить нумерацию для зарезервированных COM портов и удалить ненужные порты.

Изменение номера COM порта устройства в Windows

В Windows можно вручную изменить номер COM порта, назначенный устройству:

1. Откройте диспетчер устройств (Device Manager) командой

devmgmt.msc

.

2. В меню выберите Вид > Показать скрытые устройства.

3. Разверните Ports (COM & LPT) и найдите в списке устройство.

4. Перейдите на вкладку Параметры порта через свойства и нажмите кнопку Дополнительно.

5. Текущий номер COM порта указан в поле COM Port Number. Чтобы изменить его, выберите нужный номер из выпадающего списка.

Если нужный номер занят, вам нужно удалить резервацию COM порта за другим устройством:

— Найдите устройство, которому назначен нужный вам номер COM порта (бледная иконка означает, что устройство не подключено).

— Щёлкните по нему ПКМ и выберите Удалить.

— Теперь вы можете назначить освобождённый номер другому устройству. Еще раз откройте свойства вашего устройство, перейдите на вкладку Параметры порта > Дополнительно. Задайте свободный номер COM порта для вашего устройства.

Определение занятых COM портов с помощью PowerShell

Вы можете вывести полный список занятых COM портов с помощью PowerShell:

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

Или определить номер COM порта для конкретного устройства по его имени:

Get-WMIObject Win32_SerialPort | Where-Object { $_.Name -like "*Arduino*"} | Select Name, DeviceID

Определение процесса, использующего COM порт в Windows

Если устройство используется процессом, освободить COM порт не получится. Чтобы определить имя процесса, воспользуйтесь утилитой Process Explorer.

1. Сначала нужно вывести имя службы, которая использует COM порт. Выполните команду PowerShell:

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

Имя службы данного COM порта указано в столбце Service.

2. Запустите Process Explorer с правами администратора, выберите Find -> Find Handle or DLL, введите значение Service и завершите процесс, использующий COM порт.

Сброс назначенных COM портов через реестр

Информация об используемых COM портах хранится в реестре по пути HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\COM Name Arbiter.

Важно! Настоятельно рекомендуем предварительно создать резервную копию данной ветки реестра (File -> Export). В том случае, если что-то пойдет не так, вы сможете вернуться к первоначальной конфигурации COM портов.

1. Откройте редактор реестра

regedit.exe

и перейдите в указанный раздел.

2. Параметр ComDB в двоичном формате определяет зарезервированные порты. Каждый бит определяет состояние соответствующего порта (от 1 до 255). К примеру, если нам нужно оставить резервацию только для COM3, hex значение ComDB будет равно 04 (0000 0100).

Важно! Будьте предельно внимательными, ни в коем случае не добавьте в этот параметр дополнительные байт, иначе система может начать падать в BSOD.

3. Если нужно полностью сбросить все привязки COM, измените значение ключа ComDB на 0.

Примечание. В разделе HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM можно увидеть полный список COM портов, доступных в Windows.В разделе HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM можно увидеться список COM портов, подключенных к системе.

4. В ветке HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Ports содержится список назначенных COM портов. Все ненужные порты можно удалить (в нашем примере мы оставим только COM3 и удалим остальные);

5. После выполнения всех действий отключите всё оборудование и перезагрузите Windows. После перезагрузки включите оборудование в нужном порядке — все обнаруженные COM порты будут автоматически определены системой.

Дополнительные утилиты для очистки COM портов

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

1. COM Name Arbiter Tool — утилита для освобождения занятых COM портов. Запустите её с правами администратора, выберите нужные порты и нажмите Clear unused Reservations.

2. Device Cleanup Tool — утилита для удаления неиспользуемых устройств и очистки резерваций COM портов.

banner for Windows
Купить ключ активации Windows от
Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии