Вопрос или проблема
У меня проблемы с определением приложения, использующего порт 25 на моем компьютере с Windows 10. Есть ли полезные подсказки по отображению используемых портов и связанных приложений без сторонних приложений?
Без использования внешнего программного обеспечения. Откройте командную строку:
netstat -abn
ИЛИ
netstat -a -n -p tcp -o
В Диспетчере задач -> Вкладка Процессы/Подробности
Вы можете сопоставить PID с результатом второй команды netstat выше, затем вы можете найти имя изображения/завершить процесс и т. д., если это необходимо.
Существуют также множество сторонних приложений, которые могут упростить процесс и сделать информацию более удобной для чтения, просто выполните поиск в Google, если хотите их найти.
Графическое решение – использовать Монитор ресурсов
Windows. Вы можете запустить его, нажав START
и введя эту команду: Perfmon /Res
Затем вы можете щелкнуть на вкладку Сеть
и просмотреть все сетевые подключения, порты в ожидании и т. д.
Откройте командную оболочку и выполните
netstat -a -n -p tcp -o
Нет необходимости запускать от имени администратора.
Последний столбец – это PID. Вы можете найти этот PID в диспетчере задач. Обязательно активируйте “показать процессы всех пользователей” там.
Смотрите документацию по netstat.
Основываясь на предыдущем ответе. Однострочник для tcp:
# Все tcp порты:
netstat -ano | ConvertFrom-String -PropertyNames ProcessName,Proto,Local,Remote,State,PID| where Proto -eq 'TCP' | %{ $_.ProcessName = (Get-Process -Id $_.PID).ProcessName; $_ } |Format-Table -AutoSize
#Конкретный порт (здесь используем 1433)
netstat -ano | select-string -Pattern ':1433' | ConvertFrom-String -PropertyNames ProcessName,Proto,Local,Remote,State,PID| where Proto -eq 'TCP' | %{ $_.ProcessName = (Get-Process -Id $_.PID).ProcessName; $_ } |Format-Table -AutoSize
Старый способ, но я использую этот powershell (сохраненный как simplens.ps1
):
$procs = Get-Process
$ports = netstat -ano
$ports[4..$ports.length] |
# Первый столбец возвращается пустым, поэтому мы устанавливаем для него "ProcessName" в качестве заполнителя для дальнейшего использования
ConvertFrom-String -PropertyNames ProcessName,Proto,Local,Remote,State,PID |
where State -eq 'LISTENING' |
foreach {
$_.ProcessName = ($procs | where ID -eq $_.PID).ProcessName
$_
} |
Format-Table
определение приложения, использующего порт 25
Это было бы просто изменить это для порта, добавив дополнительный фильтр:
$procs = Get-Process
$ports = netstat -ano
$ports[4..$ports.length] |
# Первый столбец возвращается пустым, поэтому мы устанавливаем для него "ProcessName" в качестве заполнителя для дальнейшего использования
ConvertFrom-String -PropertyNames ProcessName,Proto,Local,Remote,State,PID |
where State -eq 'LISTENING' |
foreach {
$_.ProcessName = ($procs | where ID -eq $_.PID).ProcessName
$_
} |
?{ $_.Local.EndsWith(":25") } |
Format-Table
Мне, вероятно, следует убрать Format-Table
и обернуть это в метод, который просто возвращает объекты. Пусть код, вызывающий метод, решает, какие дополнительные фильтры нужны и как их форматировать:
function Get-Listeners
{
$procs = Get-Process
$ports = netstat -ano
$ports[4..$ports.length] |
# Первый столбец возвращается пустым, поэтому мы устанавливаем для него "ProcessName" в качестве заполнителя для дальнейшего использования
ConvertFrom-String -PropertyNames ProcessName,Proto,Local,Remote,State,PID |
where State -eq 'LISTENING' |
foreach {
$_.ProcessName = ($procs | where ID -eq $_.PID).ProcessName
$_
}
}
Get-Listeners |
?{ $_.Local.EndsWith(":25") } |
Format-Table
Гораздо более простой метод (так было и остается в 2023 году) – сначала открыть командную строку.
(это можно сделать, удерживая клавишу с логотипом Windows на клавиатуре + Вырезать и Вставить, или просто напишите эти 3 буквы> cmd.
Итак, Winlogo + cmd)
Затем введите или скопируйте (Ctrl+C), и вставьте (Ctrl+V)
*Чтобы завершить работающий процесс:
cmd>TASKLIST
[выберите задачу, которую хотите завершить, затем:]
cmd>taskkill /IM [имя программы, например:] mswebview2.exe /F
*Ввод help в cmd дает варианты после выполнения чего-то.
Иногда он также может предоставить пример,
вот как был получен вышеупомянутый ЛЕГКИЙ метод –
после очень минимальных проб и ошибок.
Итак, очень простой способ после приведенных выше этапов:
-
windowslogo+cmd
-
tasklist
-
taskkill /IM [имя программы, например:] mswebview2.exe /F
ЛЕГКИЙ МЕТОД + нет “стороннего” программного обеспечения.)
netstat -n
из командной строки покажет вам список IP-адресов и открытых портов на вашем компьютере. Вероятно, лучше всего будет выполнить поиск в Интернете, чтобы определить, что работает на конкретном порту, но вот несколько ресурсов, которые вы можете проверить на открытые порты:
- https://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers
- https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xml
ПРАВКА: аргументы netstat
пользователя 544199, похоже, выводят более полезную информацию, чем мои. Я бы использовал это.
Пост запрашивает ответы без сторонних приложений, однако другие читатели могут быть более склонны к графическому интерфейсу.
Для тех, кто ищет приложение, TCPView, похоже, работает лучше всего.
Его рекомендует Microsoft, и у него понятный и удобный интерфейс.
https://learn.microsoft.com/en-us/sysinternals/downloads/tcpview
Ответ или решение
Чтобы определить, какие приложения используют открытые порты на вашем компьютере с Windows 10, вы можете выполнить несколько простых шагов, воспользовавшись встроенными инструментами системы. Это позволит вам получить необходимую информацию без установки стороннего программного обеспечения.
Шаги для отображения открытых портов и приложений
-
Открытие командной строки:
- Для начала откройте командную строку. Вы можете сделать это, нажав клавишу Windows и введя
cmd
, затем нажмите Enter.
- Для начала откройте командную строку. Вы можете сделать это, нажав клавишу Windows и введя
-
Использование команды netstat:
-
В командной строке введите одну из следующих команд для отображения списка открытых портов и связанных с ними приложений:
a) Для более детального отчета используйте:
netstat -abn
Эта команда выводит список всех соединений и слушающих (LISTENING) портов вместе с приложениями, которые их используют.
b) Или используйте команду с указанием PID (идентификатор процесса):
netstat -a -n -p tcp -o
Здесь последняя колонка отображает PID, который поможет вам идентифицировать приложение.
-
-
Просмотр процессов в диспетчере задач:
- Чтобы связать PID с конкретным процессом, откройте Диспетчер задач (Task Manager). Для этого нажмите
Ctrl + Shift + Esc
или щелкните правой кнопкой мыши на панели задач и выберите «Диспетчер задач». - Включите отображение процессов всех пользователей, если это необходимо. Перейдите на вкладку «Подробности» и найдите процесс по его PID, чтобы увидеть, какое приложение его использует.
- Чтобы связать PID с конкретным процессом, откройте Диспетчер задач (Task Manager). Для этого нажмите
-
Использование средства мониторинга ресурсов:
- Опционально, вы можете использовать «Монитор ресурсов» (Resource Monitor). Для этого введите следующую команду в поле поиска Windows или в командной строке:
perfmon /res
- Перейдите на вкладку «Сеть», чтобы увидеть все сетевые подключения и какие порты слушаются.
- Опционально, вы можете использовать «Монитор ресурсов» (Resource Monitor). Для этого введите следующую команду в поле поиска Windows или в командной строке:
Дополнительная информация
-
Если вы хотите отфильтровать результаты для конкретного порта (например, 25), вы можете использовать следующую команду:
netstat -ano | findstr ":25"
Это позволит вам увидеть только информацию о порту 25.
-
Обратите внимание, что для работы с PID вы можете создать простой скрипт на PowerShell. Например, чтобы вывести информацию о всех приложениях, использующих открытые порты, вы можете использовать такой скрипт:
Get-NetTCPConnection | Where-Object {$_.State -eq "Listen"} | Select-Object -Property LocalAddress, LocalPort, @{Name="ProcessName"; Expression={(Get-Process -Id $_.OwningProcess).ProcessName}}
Рекомендации по справочным ресурсам
Если вам нужно больше информации о портах, вы можете использовать следующие онлайн-ресурсы:
Следуя этим шагам, вы сможете легко определить, какие приложения используют определенные порты на вашем компьютере с Windows, без необходимости установки сторонних приложений.