Как перечислить открытые порты и приложения, которые их используют, в Windows?

Вопрос или проблема

У меня проблемы с определением приложения, использующего порт 25 на моем компьютере с Windows 10. Есть ли полезные подсказки по отображению используемых портов и связанных приложений без сторонних приложений?

Без использования внешнего программного обеспечения. Откройте командную строку:

  1. netstat -abn

ИЛИ

  1. 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 дает варианты после выполнения чего-то.
Иногда он также может предоставить пример,
вот как был получен вышеупомянутый ЛЕГКИЙ метод –
после очень минимальных проб и ошибок.
Итак, очень простой способ после приведенных выше этапов:

  1. windowslogo+cmd

  2. tasklist

  3. taskkill /IM [имя программы, например:] mswebview2.exe /F

ЛЕГКИЙ МЕТОД + нет “стороннего” программного обеспечения.)

netstat -n из командной строки покажет вам список IP-адресов и открытых портов на вашем компьютере. Вероятно, лучше всего будет выполнить поиск в Интернете, чтобы определить, что работает на конкретном порту, но вот несколько ресурсов, которые вы можете проверить на открытые порты:

ПРАВКА: аргументы netstat пользователя 544199, похоже, выводят более полезную информацию, чем мои. Я бы использовал это.

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

Для тех, кто ищет приложение, TCPView, похоже, работает лучше всего.

Его рекомендует Microsoft, и у него понятный и удобный интерфейс.

https://learn.microsoft.com/en-us/sysinternals/downloads/tcpview

Ответ или решение

Чтобы определить, какие приложения используют открытые порты на вашем компьютере с Windows 10, вы можете выполнить несколько простых шагов, воспользовавшись встроенными инструментами системы. Это позволит вам получить необходимую информацию без установки стороннего программного обеспечения.

Шаги для отображения открытых портов и приложений

  1. Открытие командной строки:

    • Для начала откройте командную строку. Вы можете сделать это, нажав клавишу Windows и введя cmd, затем нажмите Enter.
  2. Использование команды netstat:

    • В командной строке введите одну из следующих команд для отображения списка открытых портов и связанных с ними приложений:

      a) Для более детального отчета используйте:

      netstat -abn

      Эта команда выводит список всех соединений и слушающих (LISTENING) портов вместе с приложениями, которые их используют.

      b) Или используйте команду с указанием PID (идентификатор процесса):

      netstat -a -n -p tcp -o

      Здесь последняя колонка отображает PID, который поможет вам идентифицировать приложение.

  3. Просмотр процессов в диспетчере задач:

    • Чтобы связать PID с конкретным процессом, откройте Диспетчер задач (Task Manager). Для этого нажмите Ctrl + Shift + Esc или щелкните правой кнопкой мыши на панели задач и выберите «Диспетчер задач».
    • Включите отображение процессов всех пользователей, если это необходимо. Перейдите на вкладку «Подробности» и найдите процесс по его PID, чтобы увидеть, какое приложение его использует.
  4. Использование средства мониторинга ресурсов:

    • Опционально, вы можете использовать «Монитор ресурсов» (Resource Monitor). Для этого введите следующую команду в поле поиска Windows или в командной строке:
      perfmon /res
    • Перейдите на вкладку «Сеть», чтобы увидеть все сетевые подключения и какие порты слушаются.

Дополнительная информация

  • Если вы хотите отфильтровать результаты для конкретного порта (например, 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, без необходимости установки сторонних приложений.

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

Капча загружается...