Как освободить com порт windows 10
Перейти к содержимому

Как освободить com порт windows 10

  • автор:

Очистка занятых COM портов в Windows

date

02.02.2022

user

itpro

directory

PowerShell, Windows 10, Windows 7, Windows Server 2019

comments

комментариев 26

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

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

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

В Windows можно вручную изменить номер COM порта, назначенный устройству. Предположим требуемый COM порт уже занят, и мы хотим его попробовать его освободить. Для этого:

  1. Откройте диспетчер устройств (Device Manager) командой devmgmt.msc;
  2. В меню выберите View->Show Hidden Devices;Отобразить скрытые устройства
  3. Затем разверните Ports (COM & LPT) и найдите в списке устройство;
  4. Перейдите на вкладку Port Settings и нажмите кнопку Advanced;
  5. Текущий номер COM порта, назначенный устройству указан в поле COMPortNumber;
  6. Чтобы изменить его, раскройте выпадающий список и выберите номер COMпорта, который хотите задать.Изменить номер назначенного COM порта

Но чаще всего изменить номер COM порт на другой не получится, так как все «низкие» COM порт уже используются (in use);

  • В этом случае нужно попробовать удалить резервацию COM порта за другим устройством. В ветке Ports (COM & LPT) найдите которому назначен нужный вам номер COM порта (бледная иконка означает, что данный COM порт назначен, но в сейчас это устройство не подключено);
  • Щелкните по нему ПКМ и выберите Uninstall;Удаление отключенного COM устройства
  • Теперь вы можете назначить освобожденный COM порт другому устройству. Еще раз откройте свойства вашего устройство, перейдите на вкладку PortSettings ->Advanced. Задайте свободный номер 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 порт. Чтобы определить имя процесса, который использует COM порт понадобится утилита 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

    powershell: получить название процессов и служб использующих COM порты в windows

    Имя службы данного COM порта указано в столбце Service. Например, для COM2 это Serial. Теперь нужно запустить Process Explorer с правами администратора и выбрать в меню Find -> Find Handle or DLL. В строке Hangde or DLL substring введите значение Service, полученное ранее. В нашем примере это Serial .

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

    Process Explorer - ищем процесс или программу, которая используется com serial порт в windows

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

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

      Откройте редактор реестра (regedit.exe) и перейдите в указанную ветку.

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

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

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

    Сбросить привязки COM портов

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

    SERIALCOMM

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

    список COM портов в реестре

  • В ветке HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Ports содержится список назначенных COM портов. Все ненужные порты можно удалить (в нашем примере мы оставим только COM3 и удалим остальные);
  • Отключите все оборудование и перезагрузите Windows;
  • После перезагрузки включите оборудование в нужном порядке (переустановите конверторы USB-to-serial и т.д.). Все обнаруженные COM-порты автоматически определяться системой и им будут последовательно выделены номера COM портов.
  • Также вы можете использовать следующие две бесплатные утилиты для очистки занятых (In Use) COM портов:

    утилита COM Name Arbiter для очистки занятых COM портов в Windows

    • COM Name ArbiterTool – утилита для освобождения занятых COM портов. Запустите утилиту с правами администратора, выберите COM порты, которые вы хотите освободить и нажмите Clear unused Reservationsи Remove non-present devices;
    • Device Cleanup Tool – утилита используется для поиска в реестре информации о ранее подключенных устройств (в ветке HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum) и удаления неиспользуемых устройств и очистки резерваций COM портов.

    Предыдущая статьяПредыдущая статья Следующая статья Следующая статья

    Как очистить использующийся порт в windows?

    15432

    Формулировка вопроса напрашивается на соотвествующий ответ.
    Но если по существу — узнать какая программа занимает порт можно
    netstat -aon | findstr 8080
    потом
    tasklist /fi «PID eq 12345»
    — вместо 12345 подставить число из вывода первой команды

    Ответ написан более трёх лет назад
    Нравится 4 1 комментарий

    Я бы сразу не прибивал. Есть большие шансы, что после перезагрузки ОС опять все начнется заново.
    Узнав что за процесс открывает порт нужно понять откуда этот процесс взялся, нужен ли он вам. Если не нужен — просто удалить соответствующее ПО. Если нужен — разбираться по логам или сообщениям в журнале, в чем проблема лагов.

    Кстати, проще всего посмотреть кто слушает порт можно с помощью «Монитора ресурсов», который запускается из «диспетчера задач».

    Настройка COM-портов

    COM-порт — это тип последовательного порта, который соответствует следующим дополнительным требованиям:

    • Доступ к COM-порту осуществляется через экземпляр класса интерфейса устройства com-порта. Идентификатор GUID для этого класса GUID_DEVINTERFACE_COMPORT, который определен в ntddser.h.
    • Для работы с COM-портом используется интерфейс, совместимый с UART 16550, определенный в ntddser.h.
    • Чтобы обеспечить совместимость с большинством приложений, которые обращаются к COM-портам, следует назначить символьное имя ссылки, использующее стандартное соглашение об COM именовании , где — номер COM-порта (например, COM1). Если вы используете COM имя, необходимо получить номер COM-порта из базы данных COM-портов. Номера COM-портов следует использовать только с именами COM .

    По умолчанию объединенная операция установщика класса для класса настройки устройств Ports и драйвера функции Serial настраивает устройство в качестве COM-порта.

    Сведения о том, как установщик класса Ports и драйвер функции Serial создают интерфейс устройства COM-порта для COM-порта, см. в статье Внешнее именование COM-портов.

    Совместная работа с нами на GitHub

    Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.

    Windows driver documentation

    Как освободить com порт windows 10

    Помогите решить проблему с занятыми сериальными портами.
    Был Blue tooth adapter который преодически перетыкал из одного USB порта в другой. Он открывал новые порты в зависимости от перетыкания из одного USB в другой. Тоже самое с баркод ридером.
    Вытащил все ЮСБ устройства но порты не освобождаются.

    Изображения

    USB_serial.jpg (188.9 Кбайт, 23 просмотров — Кто скачивал? )

    Регистрация: 19.02.2008
    Сообщения: 48

    Вроде не сложно на первый взгляд — деинсталировать ПО от устройств, почистить реестр от остатков адресов, ну на всякий случай скинуть БИОС.

    Регистрация: 25.11.2002
    Адрес: no chance
    Сообщения: 317

    Деинсталаяция устройсва не помогает.
    Например:
    втыкаю Блютус адаптер. Он занимает 2 порта, ну например 3 и 4.
    Захажу в девайс мэнэджер и деинсталирую адаптер. Вытаскиваю адаптер и перегружаю комп. Затем втыкаю адаптер в другой ЮСБ слот и он занимает 5 и 6 порт и т.д. Проблемма например с Актив Синком который конектится к КПК только через порт 8. А при перетыкивании адаптера 8 порт больше не устанавливается. Приходится например найденный 30 порт переименовывать в 8.

    Да. ето не только на моём компе.
    Пробовал чистить регистры по поиску СОМ4 и т.д стирать почемуто не даёт. Вернее даёт не всё. Но это не помогает.

    А зачем Биос обнулят?

    Administrator
    Регистрация: 06.05.2003
    Адрес: Московская Подводная Лодка
    Сообщения: 12 018

    HardSoftMaster, конкретно ты это делал? тогда распиши по пунктам.
    вопрос вполне конкретный, а не «кто как думает на первый взгляд»

    __________________
    все «спасибы» — в приват и в репутацию! не засоряйте форум.
    ~~~~~~~~~~~~~~~~~~~~~~
    The time has come it is quite clear, our antichrist is almost already here.

    Вольный Ветер
    Регистрация: 03.11.2003
    Адрес: из Сибири мы
    Сообщения: 1 051
    M/b такое решение возможно.
    __________________
    Сотри случайные черты.
    А. Блок
    Регистрация: 25.11.2002
    Адрес: no chance
    Сообщения: 317

    Breeze
    Супер!
    Всё стёрлось и работает. В дополнение поудалял много старых девайсов.

    Чтобы далеко не ходить скопировал как это делается:

    «Многие замечали, что в процессе переустановки драйверов дата-кабеля в Windows появляются все новые и новые виртуальные COM-порты. Подчистить систему позволяет метод, найденный Louis’ом:

    Запусти апплет Control panel — System — Advanced — Environment variables (Панель управления — Система — Дополнительно — Переменные среды)
    В System variables (Системные переменные) создай переменную DEVMGR_SHOW_NONPRESENT_DEVICES и присвой ей значение 1.
    После этого OK—OK—закрой System.
    Эта переменная позволить работать пункту меню «Показать скрытые устройства» в диспетчере устройств.
    Теперь опять запусти Control panel — System — Hardware — Device Manager — View — Show hidden devices (Панель управления — Система — Оборудование — Диспетчер устройств — Вид — Показать скрытые устройства).

    А потом посмотри в COM-портах или ещё где наличие этих COM25 и т.п. (скрытые устройства будут отображены бледным цветом — это устройства, которые в данный момент не подключены к системе, но были когда-то)
    Если таковые COM-порты имеются, удали их.»

    ::VIP::
    Железный Дровосек
    Регистрация: 01.10.2003
    Адрес: 1/6 суши
    Сообщения: 3 510

    Breeze
    Хорошая ссылка!

    Там еще и второй метод имеется, более универсальный

    Если в диспетчере устройств присутствуют сом-порты, то как их удалять понятно, а когда лишних портов там вроде не значится, и галка «Показать скрытые устройства» не помогает, тогда можно сделать следующее.

    Что любопытно, я до этого способа в свое время допер совершенно самостоятельно. Только я не дотумкал тогда использовать СОМ1:, а юзал в этих целях PCI-модем, который садился на СОМ3:

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *