Windows как узнать какое приложение занимает порт

При запуске новых сервисов в Windows, вы можете обнаружить что нужный порт уже занят (слушается) другой программой (процессом). Разберемся, как определить какая программ прослушивает определенный TCP или UDP порт в Windows.

Например, вы не можете запустить сайт IIS на стандартном 80 порту в Windows, т.к. этот порт сейчас занят (при запуске нескольких сайтов в IIS вы можете запускать их на одном или на разных портах). Как найти службу или процесс, который занял этот порт и завершить его?

Чтобы вывести полный список TCP и UDP портов, которые прослушиваются вашим компьютером, выполните команду:

netstat -aon| find "LIST"

Или вы можете сразу указать искомый номер порта:

netstat -aon | findstr ":80" | findstr "LISTENING"

Используемые параметры команды netstat:

  • a – показывать сетевые подключения и открытые порты
  • o – выводить идентфикатор професса (PID) для каждого подключения
  • n – показывать адреса и номера портов в числовом форматер

По выводу данной команды вы можете определить, что 80 порт TCP прослушивается (статус
LISTENING
) процессом с PID 16124.

netstat найти программу, которая заняла порт

Вы можете определить исполняемый exe файл процесса с этим PID с помощью Task Manager или с помощью команды:

tasklist /FI "PID eq 16124"

Можно заменить все указанные выше команды одной:

for /f "tokens=5" %a in ('netstat -aon ^| findstr :80') do tasklist /FI "PID eq %a"

С помощью однострочной PowerShell команды можно сразу получить имя процесса, который прослушивает:

  • TCP порт:
    Get-Process -Id (Get-NetTCPConnection -LocalPort 80).OwningProcess
  • UDP порт:
    Get-Process -Id (Get-NetUDPEndpoint -LocalPort 53).OwningProcess

powershell найти процесс, который слушает TCP порт

Можно сразу завершить этот процесс, отправив результаты через pipe в командлет Stop-Process:

Get-Process -Id (Get-NetTCPConnection -LocalPort 80).OwningProcess| Stop-Process

Проверьте, что порт 80 теперь свободен:

Test-NetConnection localhost -port 80

проверить что порт свободен

Чтобы быстрой найти путь к исполняемому файлу процесса в Windows, используйте команды:

cd /

dir tiny.exe /s /p

Или можно для поиска файла использовать встроенную команду where :

where /R C:\ tiny

В нашем случае мы нашли, что исполняемый файл
tiny.exe
(легкий HTTP сервер), который слушает 80 порт, находится в каталоге c:\Temp\tinyweb\tinyweb-1-94

команда позволяет найти путь к exe файу в windows

Содержание статьи:

  • Типовые задачи и их решение
    • Вариант 1: смотрим список прослушиваемых портов + приложение (общий случай)
    • Вариант 2: а если наоборот — по названию приложения узнать порт
    • Вариант 3: исп-ем спец. приложения (более информативнее и быстрее)
  • Вопросы и ответы: 0

Доброго времени!

При запуске некоторого ПО/сервисов можно столкнуться с тем, что определенный порт в системе уже занят… какой-нибудь другой программой (скажем, настраиваете вы апач — и возникает конфликт порта 80. Например, на нем может «висеть/слушать» Skype…). Незадача…?

Собственно, в заметке приведу неск. способов, как можно относительно быстро узнать «кем» и «чем» заняты определенные порты — а это позволит быстро изменить их настройки и разрешить вопрос! (разумеется, приводить советы посмотреть описание установленного софта, в котором разработчики указывают порты — я не буду: ибо это долго, и не всегда продуктивно… 🙂).

*

Примечание:

  1. заметка носит информативный характер, и не явл. инструкцией в последней инстанции. Дело в том, что нередко встречаются не офиц. резервируемые порты… и, разумеется, точности здесь никакой быть не может;
  2. если у вас не получается подключиться к сетевым играм, есть проблемы с раздачей/загрузкой торрентов и пр. — ознакомьтесь с заметкой про проброс портов на роутере (это немного не по теме, но когда речь заходит об этом — очень часто приходится ссылаться на сию заметку).

*

Типовые задачи и их решение

Вариант 1: смотрим список прослушиваемых портов + приложение (общий случай)

По умолчанию в Windows есть консольная утилита netstat. Она позволяет посмотреть активные соединения протокола TCP/IP (в т.ч. там есть и порты).

*

Чтобы вывести полный список портов (TCP, UDP) нужно:

1) Запустить 📌командную строку от имени администратора.

2) Ввести команду Netstat –ao и нажать Enter.

(можно ее слегка изменить и использовать такую: netstat -aon| find «LISTENING»)

Примечание:

  • «-a» – см. все соединения и порты.
  • «-o» – см. числовые идентификаторы процесса, отвечающего за конкретное соединение (Process ID, сокращенно: PID).
  • «-n» – см. номера портов в числовом формате»;

img-Gde-tut-port-i-identifikator-sm.-skrin-ya-vyidelil.jpg

Где тут порт и идентификатор, см. скрин, я выделил // пример работы с командной строкой, команда netstat

📌 Для справки!

В списке, который предоставит нам команда Netstat, есть строки с аббревиатурами: «ESTABLISHED» и «LISTENING». В чем разница:

  • «ESTABLISHED» — означает, что в данный момент установлено соединение;
  • «LISTENING» — означает, что сокет ожидает соединения (в режиме прослушивания).

Причем, и тот и другой порты открыты, но один ожидает соединения, а другой уже установил соединение!

Например, протокол HTTP (это порт 80-й) находится в режиме прослушивания («LISTENING») до тех пор, пока кто-нибудь не зайдет на сервер. В тот момент, когда кто-нибудь будет загружать страницу — режим поменяется на «ESTABLISHED».

3) Например, понадобилось нам узнать какой процесс занял порт с идентификатором (PID) «5288» — вводим в командной строке tasklist | find «5288» и нажимаем Enter;

img-Vvodim-PID-i-smotrim-nazvanie-protsessa.jpg

Вводим PID и смотрим название процесса

4) Почти сразу же узнаем, что это фирменная утилита от производителя ноутбука ASUS (шла вместе с операционной системой Windows // инсталлируется автоматически при установке драйверов).

img-Asus.jpg

Asus

5) Кстати, если вам неудобно пользоваться командной строкой — то узнать название процесса и его расположение по PID можно в 📌диспетчере задач (Ctrl+Alt+Del): достаточно перейти во вкладку «Подробности».👇

img-Dispetcher-zadach-podrobnosti-sortirovka-po-ID-protsessu.jpg

Диспетчер задач — подробности — сортировка по ИД процессу

*

Вариант 2: а если наоборот — по названию приложения узнать порт

Относительно просто!

Находим нужный процесс в 📌диспетчере задач (вкладка «Подробности» для Windows 11). Узнаем его ИД (в моем случае 6216, взял для примера uTorrent).

img-uTorrent-ID-6216.jpg

uTorrent — ИД 6216

Далее в комодной строке набираем следующее:

netstat -aon| find «6216»

где вместо «6216» нужно указать свой ИД.

img-19411-port-ispolzuemyiy-uTorrent.jpg

19411 порт, используемый uTorrent

В результате определяем, что uTorrent слушает порт 19411

Кстати, в настройках uTorrent (если запустить саму программу) — можно тоже узнать и изменить этот порт на какой-нибудь другой.

img-Nastroyki-uTorrent-vyibor-porta.jpg

Настройки uTorrent — выбор порта

*

Вариант 3: исп-ем спец. приложения (более информативнее и быстрее)

📌 TCPView

Ссылка на сайт Microsoft: https://learn.microsoft.com/ru-ru/sysinternals/downloads/tcpview

TCPView — небольшая спец. утилита (не требующая установки), позволяющая очень быстро узнать список всех сетевых соединений, с информацией о портах, IP-адресах и пр.

Причем, список можно отсортировать по нужному вам столбцу + отфильтровать по какой-нибудь аббревиатуре. В общем, вещи удобная! См. скрин ниже. 👇

img-TCPView-spisok-prilozheniy-smotrim-vse-neobhodimyie-svoystva.jpg

TCPView — список приложений, смотрим все необходимые свойства

📌 CurrPorts

Ссылка на офиц. сайт: https://www.nirsoft.net/utils/cports.html#DownloadLinks

CurrPorts — еще одна сетевая утилита для просмотра сетевых подкл. В установке программа не нуждается, по информативности не уступает первой. Кстати, у утилиты есть рус. перевод (но скачать его нужно отдельно, есть на офиц. сайте).

img-CurrPorts-primer-ispolzovaniya.jpg

CurrPorts — пример использования

*

Дополнения по теме — приветствуются!

Успехов!

👋

В Windows при запуске сервисов может возникнуть конфликт портов, если нужный порт уже занят другим процессом. Например, IIS не запустится на порту 80, если он используется. В этой статье расскажем, как определить, какая программа прослушивает TCP или UDP порт, с помощью netstat, PowerShell, tasklist и как освободить порт.

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

Поиск программы по порту с помощью netstat

1. Выведите все прослушиваемые порты:


netstat -aon | find "LIST"

Параметры:

-a: показывает все подключения и порты.

-o: отображает PID процесса.

-n: числовой формат адресов и портов.

2. Найдите процесс по конкретному порту (например, 80):


netstat -aon | findstr ":80" | findstr "LISTENING"

Пример вывода: порт 80 занят процессом с PID 16124.

3. Определите программу по PID:


tasklist /FI "PID eq 16124"

Вывод покажет имя исполняемого файла (например, tiny.exe).

4. Однострочная команда:


for /f "tokens=5" %a in ('netstat -aon ^| findstr :80') do tasklist /FI "PID eq %a"

Поиск программы с помощью PowerShell

1. Найдите процесс для TCP-порта:


Get-Process -Id (Get-NetTCPConnection -LocalPort 80).OwningProcess

2. Найдите процесс для UDP-порта:


Get-Process -Id (Get-NetUDPEndpoint -LocalPort 53).OwningProcess

3. Завершите процесс:


Get-Process -Id (Get-NetTCPConnection -LocalPort 80).OwningProcess | Stop-Process

4. Проверьте, свободен ли порт:


Test-NetConnection localhost -Port 80

Поиск пути к исполняемому файлу

1. Поиск файла по имени:


cd \
dir tiny.exe /s /p

2. Использование where:


where /R C:\ tiny

Пример: найдено c:\Temp\tinyweb\tinyweb-1-94\tiny.exe.

Устранение неполадок

Порт не отображается:

– Убедитесь, что процесс запущен (netstat -aon).

– Проверьте права администратора для PowerShell.

Конфликт портов:

– Завершите процесс (Stop-Process) или измените порт сервиса (например, в настройках IIS).

Файл не найден:

– Проверьте правильность имени файла в tasklist.

– Используйте where для поиска по всему диску.

Рекомендации

Безопасность: Завершайте только известные процессы, чтобы не нарушить работу системы.

Мониторинг: Используйте Resource Monitor (resmon) для визуального анализа сетевых подключений.

Автоматизация: Создайте скрипт для проверки портов:


$port = 80
$process = Get-Process -Id (Get-NetTCPConnection -LocalPort $port -ErrorAction SilentlyContinue).OwningProcess
if ($process) { Write-Output "Port $port used by $($process.ProcessName) (PID: $($process.Id))" } else { Write-Output "Port $port is free" }

Логи: Проверяйте Event Viewer (eventvwr) для анализа ошибок портов.

Определение программы, использующей порт в Windows, возможно через netstat, tasklist или PowerShell (Get-NetTCPConnection, Get-NetUDPEndpoint). Эти инструменты позволяют быстро найти процесс, завершить его или освободить порт. Использование PowerShell упрощает автоматизацию и предоставляет гибкость для анализа сетевых подключений.

Лицензионный ключ активации Windows от

Часто бывает такая ситуация, что какой-либо порт (80, 8080 и т.п.) занят неизвестным приложением. Чтобы освободить порт, надо снять эту задачу. Но как узнать, какой именно процесс необходимо завершить?

Разберемся по шагам, как же решить эту проблему на примере занятого порта 8080.

как узнать процесс, занимающий порт

Сначала узнаем идентификатор процесса (PID), занимающего этот порт, с помощью команды netstat, отображающей статистику протокола и текущих сетевых подключений TCP/IP:

netstat -o -n -a | findstr 0.0:8080

ключ -o — отображение ИД процесса каждого подключения;
ключ -n — отображение адресов и номеров портов в числовом формате;
ключ -a — отображение всех подключений и портов прослушивания.
Отфильтровать содержимое ответа можно с помощью команды findstr.
Ответом на эту команду было:

TCP  0.0.0.0:8080  0.0.0.0:0  LISTENING  3152

В ответе мы видим число 3152 — это и есть PID-идентификатор таинственного процесса, занимающего порт 8080.
Затем узнаем имя приложения, соответствующего процессу с этим PID, с помощью команды tasklist, отображающей список процессов, которые сейчас выполняются на локальном или удаленном компьютере:

tasklist /FI "PID eq 3152"

ключ /FI  <фильтр> — выводит список задач, которые соответствуют заданным в фильтре условиям, фильтр — «PID eq 3152»PID процесса равен 3152.
В ответ получаем:

Имя образа                 PID Имя сессии     № сеанса    Память
========================= ==== =========== =========== =========
ApplicationWebServer.exe  3152 Services              0  6 816 КБ

Итак, выяснено, что порт 8080 занят приложением по имени ApplicationWebServer.exe.
Осталось узнать путь к этому приложению с помощью команды wmic:

wmic process where "name='ApplicationWebServer.exe'" get ExecutablePath

В результате видим:

C:\Program Files (x86)\National Instruments\Shared\NI WebServer\ApplicationWebServer.exe

Итак, порт 8080 был занят приложением ApplicationWebServer.exe, входящим в состав программного пакета LabView компании National Instruments.

Программы, способные соединяться с интернетом при подключении к сети используют так называемые порты — цифровые адреса сетевых устройств. Иногда при тонкой настройке программ или устройств возникает необходимость узнать, какое приложение занимает тот или иной порт, например с целью освободить его для другой программы. В Windows сделать это очень просто. Основных вариантов два: с помощью обычной командной строки и с помощью сторонних утилит.

В командной строке

Для отображения текущих соединений TCP/IP в Windows используется штатная консольная утилита netstat. Она может принимать более 10 параметров, но для того чтобы узнать какой порт занят каким процессом, вполне хватит трех: -a, -o и –n. Для начала необходимо получить список всех текущих соединений. От имени администратора откройте консоль CMD и выполните эту команду:

netstat –aon

netstat

Данные будут выведены в пять колонок: имя, локальный адрес, внешний адрес, состояние и идентификатор процесса (PID). Отыщите нужный вам порт и посмотрите, с каким PID он связан. Теперь откройте Диспетчер задач, переключитесь на вкладку «Процессы» (в Windows 7) или «Подробности» (в Windows 8.1) и найдите в списке этот PID. А найдя его, вы идентифицируете и процесс.

Процессы

Примечание: если в Диспетчере задач у вас не отображается ИД процесса, включите его через меню «Вид» -> «Выбрать столбцы».

В утилите CurPorts

Второй способ более прост, но для определения занимающего порт процесса вам понадобится сторонняя утилита CurPorts. Она бесплатна, проста и не требует установки.

CurPorts

Если её запустить, в окошко будут выведены не только порты и связанные с ним процессы и сервисы, но и пути к исполняемым файлам, их описания, версии, данные о разработчике и много другой полезной информации.

CurPorts

Утилита CurPorts доступна для скачивания на сайте разработчика www.nirsoft.net. Там же можно скачать и файл для её русификации.

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Как сделать активацию windows на ноутбуке
  • Epson r270 драйвер windows 10 x64
  • Установка aduc на windows 10
  • Hpq6007 driver windows 10
  • Компьютер видит только себя в сети windows 10