Как узнать какая программа занимает порт
Перейти к содержимому

Как узнать какая программа занимает порт

  • автор:

Какая программа слушает определенный порт в Windows?

date

26.10.2022

user

itpro

directory

Windows 10, Windows Server 2019

comments

комментария 2

При запуске новых сервисов в 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»

tasklist - найти процесс, который слушает порт в windows

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

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 порт

См. статью про просмотр сетевых подключений в Windows с помощью PowerShell.

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

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

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

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

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

dir tiny.exe /s /p

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

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

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

Также для просмотра списка процессов и используемых ими TCP портов в Windows можно использовать утилиту TCPView (https://learn.microsoft.com/en-us/sysinternals/downloads/tcpview).

Утилита TCPView показывает процессы и открытые ими порты

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

Читайте далее в разделе Windows 10 Windows Server 2019

page

page

page

Установка и настройка OpenVPN сервера под Windows

Как сбросить пароль локального администратора в Windows?

Настройка двухфакторной аутентификации (2FA) в Windows с помощью MultiOTP

Установка KMS сервера vlmcsd на Linux для активации Windows и Office

Блог Алексея Воронина

История, краеведение, сельское хозяйство, лесоводство, биология, IT…

Блог Алексея Воронина

Как узнать, какое приложение занимает какой-либо порт?

Часто бывает такая ситуация, что какой-либо порт (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.

Как проверить, какая именно программа работает с COM-портом компьютера

Сотрудники, офисы и COM-порты. Краткое введение в проблему

Иногда случается так, что при подключении сканера штрихкодов к программе Тирика-Магазин программа показывает сообщение об ошибке: Не могу открыть порт сканера штрихкодов: Отказано в доступе. Давайте разберемся, отчего такое может случиться.

С точки зрения Windows COM-порт, как и любой файл, флешка и т.п. является ресурсом. Любая программа, в т.ч. и сама Windows, может попросить у Windows доступ к какому-то ресурсу с определенными правами, и Windows может либо предоставить, либо не предоставить программе искомый доступ. Близкой аналогией здесь будет, наверное, офис с большим количеством комнат и кабинетов (ресурсов) и работающих в них сотрудников (программ). Если сотруднику для, например, переговоров с крупным клиентом потребуется отдельная комната, он попросит у секретаря организации дать ему ключ от этой комнаты и более никого туда не пускать до окончания переговоров. Если другой сотрудник попросит после этого у секретаря ключ от той же комнаты, ему будет отказано в доступе.

Точно так же дело обстоит и в мире программ. Если какой-то программе необходимо поработать с COM-портом, причем поработать так, чтобы ей никто в этом не мешал, программа просит Windows предоставить ей доступ к COM-порту и более никому этого доступа не предоставлять. Если после этого другая программа (например, программа Тирика-магазин) попросит у Windows доступа к (уже занятому) COM-порту, ей будет отказано в доступе.

Разумеется, это не единственная причина, по которой программе может быть отказано в доступе к COM-порту. Возвращаясь к нашей аналогии с офисом, сотруднику может быть отказано в доступе к какой-то комнате не только потому, что она занята другим сотрудником, но и потому, что эта комната, например, не существует или эта комната — кабинет директора. Однако при возникновении такой ситуации (программа Тирика-Магазин показывает на экране сообщение «Не могу открыть порт сканера штрихкодов: отказано в доступе») бывает нелишним проверить, что ни одна сторонняя программа не использует уже COM-порт в эксклюзивном режиме (сотрудник не занял комнату, на которую мы претендуем).

Так как все-таки проверить, какая именно программа работает с COM-портом компьютера

Для этого нам нужно скачать и установить на компьютер специальную программу, называемую Process Explorer. Вообще, процессом в Windows называют запущенную и работающую программу, так что название этой программы можно перевести как Исследователь запущенных программ. Пожалуйста, скачайте эту программу и запустите на своем компьютере. Вначале программа предложит вам согласиться с лицензионным соглашением (нужно нажать кнопку Agree, что переводится как Согласен) и потом немедленно покажет вам список запущенных на компьютере процессов:

Установка программы Process Explorer Главное окно программы Process Explorer

В этом окне нажмите, пожалуйста, сочетание клавиш Ctrl+F или выберите пункт меню Find | Find handle or DLL (Поиск | Искать хэндл или динамически подгружаемую библиотеку) для того, чтобы вызвать на экран окно поиска, в этом окне напишите слово Serial и нажмите кнопку Search (Искать). В ответ программа покажет вам список хэндлов (хэндлом в нашем примере про офис будет, наверное, запись о занятии комнаты у секретаря фирмы), в имени которых есть слово Serial («Последовательный». COM-порты также называются последовательными портами):

Окно поиска программы Process Explorer

Разумеется, это не будет список программ, занявших ваш COM-порт. По аналогии с офисом, мы запустили функцию поиска в компьютере секретаря фирмы и ввели в нее название комнаты — в результатах поиска может быть не только записи о резервировании этой комнаты, но и, например, запись о том, что в эту комнату нужно купить шторы. Также вероятна ситуация, когда при наличии резервирования этой комнаты мы ничего не найдем функцией поиска, например, потому, что секретарь в своих записях называет эту комнату по-другому, например, вместо «A123» она называет ее «Левая переговорная».

Кроме того, нам необходимо суметь прочитать то, что нашла нам функция поиска. Вот, например, третья строчка на рисунке выше — это запись о занятии COM-порта или нет? На самом деле это запись совсем о другом событии, но для того, чтобы это понять, нужно быть компьютерным специалистом — а у большинства читающих эту статью совсем другие образование и профессия. Поэтому мы рекомендуем вам просто максимально расширить окно поиска так, чтобы туда поместились все присутствующие в нем строчки и все присутствующие в нем тексты, сделать снимок экрана получившегося окна и прислать этот снимок экрана нам с комментарием типа: Пытаюсь использовать программу Тирика-Магазин совместо со сканером штрихкодов, получаю сообщение об ошибке , снимок окна поиска программы ProcessExplorer прилагаю. Письмо нужно отправлять на .

Как вы понимаете, отсылка нам описанного выше снимка экрана — это не панацея и не волшебный способ исправить любую ошибку в программе — это всего лишь попытка найти программу, занявшую 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 и в столбце «Имя образа«, смотрим какой процесс занимает наш порт;

В нашем случаи это Apache.exe

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

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