Как проверить чем занят com порт
Требования.
Статья применима для Windows 2000/XP/Vista/7.
Информация.
При установке некоторых программ иногда возникает проблема с доступностью порта. Т.е. вы устанавливаете программу, а она вам говорит: "Извините, но предпочитаемый порт номер занят!". И самое интересное программа не говорит чем или кем занят порт.
Как определить каким процессом (программой) занят порт.
1. В меню "Пуск" выберите пункт "Выполнить";
2. В поле "Открыть" наберите команду cmd и нажмите кнопку "ОК";
Откроется окно командной строки, примерно такого вида:
3. Наберите команду netstat -ano и нажмите кнопку "Ввод" (Enter) на клавиатуре;
Результатом выполнения данной команды, должен быть список всех активных подключений, с ip-адресами и номерами портов.
4. Теперь в колонке "Локальный адрес", находим нужный нам порт и записываем его идентификатор в колонке "PID";
Например порт номер 80, его идентификатор 440.
5. Снова открываем меню "Пучк" и выбираем пункт "Выполнить";
6. В поле "Открыть" вводим команду taskmgr и нажимаем кнопку "ОК";
7. В окне "Диспетчер задач Windows" переходим на вкладку "Процессы";
8. В главном меню открываем пункт "Вид" и выбираем пункт "Выбрать столбцы. ";
9. В окне "Выбор столбцов" находим пункт "Идентиф. процесса (PID)" и ставим рядом с ним галочку;
10. Нажимаем кнопку "ОК";
11. Теперь в окне "Диспетчер задач Windows", нажимаем на заголовок столбца "PID", для сортировки процессов по возрастанию;
12. Находим номер нашего процесса 440 и в столбце "Имя образа", смотрим какой процесс занимает наш порт;
Каждый раз при подключении нового COM устройства или USB устройства (верно для модем, мобильных телефонов, Bluetooth, конвертеров последовательных портов в USB и т.п.), Windows определяет его через механизм Plug-n-Play и назначит ему некий номер COM порта в диапазоне от 1 до 255. При повторном подключении этого же устройств, ему назначается ранее зарезервированный за ним COM порт. Новым устройствам выдается первый незанятый номер COM порта. Не редкость, когда внешние устройства при подключении создают сразу несколько COM портов (в моем случае после подключения адаптер Bluetooth, в системе появилось сразу 10 . новых COM портов).
Ряд приложений (как правило, довольно древних), способны адресовать только двухзначные номера COM портов, отказываясь работать с COM100 и выше. В самых «запущенных» вариантах, такие программы корректно работают только портами с COM1-COM9. Что делать, если подключенное устройство получило высокий номер? Можно ли сбросить нумерацию для зарезервированных COM портов и удалить назначенные порты? Попробуем разобраться на примере Windows 7.
Как правило в свойствах оборудования изменить выданный COM порт на другой не получается, т.к. система пишет, что все «низкие» COM порт уже используются (in use).
Смена номера COM порта для конкретного устройства
В первую очередь стоит попробовать вручную переопределить номер COM порта для определенного COM-устройства. Предположим требуемый COM порт уже занят, и мы хотим его попробовать его освободить.
Приведенная выше методика не всегда позволяет освободить занятый COM порт. В этом случае придется прибегнуть к редактированию реестра.
Сброс привязок COM портов через реестр
Информация об используемых COM портах хранится в ключе реестра CommDB в разделе HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlCOM Name Arbiter
- Откройте редактор реестра (regedit) и перейдите в указанную ветку.
Значение параметра ComDB в двоичном формате определяет список COM портов зарезервированных в системе. Каждый бит определяет состояние соответствующего порта (от 1 до 255). К примеру, если нам нужно оставить резервацию только для COM3, hex значение ComDB будет равно 04 (0000 0100)
Однако именно забитость портов является одной из первостепенных причин некорректной работы сети: зависаний, торможений, "лагов". Каждая из программ хоть и использует свой порт, но порой несколько программ пересекаются в одном из них, и случается своего рода "затык". Как обнаружить пресловутый "затык" – расскажем далее.
Самая распространённая проблема занятости порта встречается именно с портом номер 80 – одним из самых основных маршрутов у многих программ.
Итак, нам нужна наша любимая командная строка. Вызывается она через меню "Выполнить", которое, в свою очередь, вызывается комбинацией горячих клавиш Windows+R. В меню "Выполнить" вводим cmd – мы в командной строке.
Здесь нам необходима команда netstat -ano (прописываем именно так, с пробелом перед дефисом и без пробела без него!).
Мы увидим множество локальных адресов. все они имеют примерный вид xxx.xxx.x.xxx:PORT. Да, порт прописывается после двоеточия.
Выбираем конкретный порт, проводим пальцем до последнего столбца и узнаем ID процесса. Запоминаем число ID. На этом работа с командной строкой закончена.
Запускаем диспетчер задач (как его вызвать, знают все: Ctrl+Alt+Del или Ctrl+Shift+ESC).
Если вы используете систему Windows 8/8.1, то ID прописываются изначально во вкладке "Подробности". Если же Ваша OS – Windows 7 или ниже, то для начала идём в меню "Вид", выбираем пункт "Выбрать столбцы" и ставим галочку напротив PID.
Подтвердив изменения, мы увидим столбец с ID. Ищем число ID из командной строки, и тем самым легко узнаём, какой процесс, а следовательно – какая программа использует тот или иной порт. Итак, теперь Вы знаете, как проверить порты на предмет забитости, а это очень даже полезное умение в условиях большого количества программ, работающих в сети Интернет. Удачи!
Очистка занятых COM портов в Windows
02.02.2022
itpro
PowerShell, Windows 10, Windows 7, Windows Server 2019
комментариев 18
Когда вы подключаете к компьютеру новое 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 порт уже занят, и мы хотим его попробовать его освободить. Для этого:
- Откройте диспетчер устройств (Device Manager) командой devmgmt.msc;
- В меню выберите View->Show Hidden Devices;
- Затем разверните Ports (COM & LPT) и найдите в списке устройство;
- Перейдите на вкладку Port Settings и нажмите кнопку Advanced;
- Текущий номер COM порта, назначенный устройству указан в поле COMPortNumber;
- Чтобы изменить его, раскройте выпадающий список и выберите номер COMпорта, который хотите задать.
Но чаще всего изменить номер COM порт на другой не получится, так как все «низкие» COM порт уже используются (in use);
Однако такой способ позволяет освободить занятый COM порт не во всех случаях.
Get-WMIObject Win32_SerialPort | Select-Object Name,DeviceID,Description
Можно определить номер COM порта для определённого устройства по его имени, например:
Get-WMIObject Win32_SerialPort | Where-Object |select name, deviceid
Или
Get-WMIObject Win32_SerialPort | Where-Object |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
Имя службы данного COM порта указано в столбце Service. Например, для COM2 это Serial. Теперь нужно запустить Process Explorer с правами администратора и выбрать в меню Find -> Find Handle or DLL. В строке Hangde or DLL substring введите значение Service, полученное ранее. В нашем примере это Serial .
Process Explorer должен показать процесс, который использует сейчас ваш COM порт. Чтобы освободить COM порт, завершите процесс или программу.
Сброс назначенных COM портов Windows через реестр
Информация об используемых COM портах хранится в ключе реестра CommDB в разделе HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\COM Name Arbiter
- Откройте редактор реестра (regedit.exe) и перейдите в указанную ветку.
Примечание. В разделе HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM можно увидеть полный список COM портов, доступных в Windows.В разделе HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM можно увидеться список COM портов, подключенных к системе.
Также вы можете использовать следующие две бесплатные утилиты для очистки занятых (In Use) COM портов:
- COM Name ArbiterTool – утилита для освобождения занятых COM портов. Запустите утилиту с правами администратора, выберите COM порты, которые вы хотите освободить и нажмите Clear unused Reservationsи Remove non-present devices;
- Device Cleanup Tool – утилита используется для поиска в реестре информации о ранее подключенных устройств (в ветке HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum) и удаления неиспользуемых устройств и очистки резерваций COM портов.
Предыдущая статья Следующая статья
Статья
При присоединении абсолютно нового COM устройства или USB устройства, Windows обнаруживает благодаря Plug-n-Play и присваивает ему номер COM порта в диапазоне от 1 до 255. Если же вы подключаете устройство еще раз, ему прикрепляется тот же, зарезервированный за ним ранее COM порт. Если же вы подключаете еще одно новое устройство, то ему назначается другой незанятый номер COM порта.
Некоторые программы (чаще старые), способны работать только на двухзначных номерах COM портов, и не работают с COM100 и более. Некоторые очень древние программы работают только портами с COM1-COM9. Как поступить, если устройство получило не нужный COM порт? Можно ли удалить номер зарезервированного COM порта?
Смена номера COM порта для приложения или устройства
В первую очередь стоит попробовать вручную переопределить номер COM порта для определенного COM-устройства. Предположим требуемый COM порт уже занят, и мы хотим его попробовать его освободить.
- Запустим диспетчер устройств (Device Manager) таким образом: set devmgr_show_nonpresent_devices=1
start devmgmt.msc - В меню консоли выберем View->Show Hidden Devices.
- Разверните ветку Ports (COM &LPT) и в списке найдите устройство, которому назначен нужный COM порт (бледная иконка означает, что данный COM порт назначен, но в настоящий момент это устройство не подключено). Щелкните по нему ПКМ и выберите Uninstall
- Освобожденный COM порт может быть назначен другому устройству. Найдите в этой же ветке свое устройство, откройте окно его свойств (Properties). Затем перейдите на вкладку PortSettings и нажмите кнопку Advanced. В выпадающем списке выберите неиспользуемый COM порт.
Приведенная выше методика не всегда позволяет освободить занятый COM порт. В этом случае придется прибегнуть к редактированию реестра.
Сброс привязок COM портов через реестр
Информация об используемых COM портах хранится в ключе реестра CommDB в разделеHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\COM Name Arbiter
- Откройте редактор реестра (regedit) и перейдите в указанную ветку.
Порт занят другим приложением как освободить
Добавление от 17.11.2008 03:14:
В результате поисков выяснил, что модем использует порт COM3 и этот порт занят другим приложением.
Исходя из этого, прошу подсказать, как мне выйти на этот порт чтобы выяснить, чем он занят.
Трудность для меня здесь заключается в том, что в мэнеджере хардваров в списке портов этот порт не обозначен, а список начинается почему-то с СОМ5.
Цитата:
в диспетчере устройств найди то устройство, которое заняло этот порт |
Дело в том, что в мэнеджере устройств отбражаются порты с 5_го по 9_й.
В гугле я нашёл, что встроенный модем система видит как COM_порт 3.
Я сделал (с модемом) то, что ты рекомендуешь, но, к сожалению, безуспешно.
По умолчанию в выпадающем меню стоит порт 3.
Далее отображаются порты с 5_го по 9_й и они заняты, но есть множество свободных. Когда я меняю на них, то получаю снова сообщения, что "эти порты могут быть заняты и выбор их может привести к проблемам с системой".
Но, тем не менее, я попробовал несколько, но когда после их смены кликаю на "опрос модема", то опять-таки получаю изначальное сообщение, что порт занят.
Какой-то заколдованный круг.
Что ещё можно предпринять? Я, правда, уже задумываюсь об откате, но хоцца восстановить модем без этого.
И вот ещё что. В справке на прогу под кодом ошибки ( 102), который я получаю при попытке отправить факс, стоит следующее:
"Модем занят другим приложением (Er 102)
Возможно модем используется программой, работающей с ним не через TAPI, а напрямую через COM-порт."
Но у меня с модемом работает только эта прога и никакая другая. И связь её с модемом осуществляется через TAPI (это настройка по умолчанию).