Найдите, какой порт использует svchost

Найдите, какой порт использует svchost

Я воспользовался другим ответом, чтобы найти процесс, который использует порт 8000 при запуске компьютера.

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

Это показывает, что svchostон использует порт. Поэтому я без проблем его убиваю и запускаю то, что хочу запустить на порту 8000.

Но есть ли способ узнать, какая программа svchostиспользует этот порт, чтобы предотвратить его запуск?

решение1

По умолчанию каждый svchostэкземпляр размещает (или используется для размещения) несколько сервисов. Вы можете прочитать об этомздесь. Таким образом, вы не сможете правильно определить, какая служба отвечает за активность процесса. Вы все равно можете увидеть, какие службы размещены в рассматриваемом процессе, используя PowerShell:

Get-WmiObject Win32_Service -Filter "ProcessId='$PID'"

например:

PS C:\> Get-WmiObject Win32_Service -Filter "ProcessId='1448'"

ExitCode  : 0
Name      : EFS
ProcessId : 1448
StartMode : Manual
State     : Running
Status    : OK

ExitCode  : 0
Name      : KeyIso
ProcessId : 1448
StartMode : Manual
State     : Running
Status    : OK

ExitCode  : 0
Name      : SamSs
ProcessId : 1448
StartMode : Auto
State     : Running
Status    : OK

ExitCode  : 0
Name      : VaultSvc
ProcessId : 1448
StartMode : Manual
State     : Running
Status    : OK

(Они не размещены в svchost, но вы поняли идею.)Из командной строки процесса не всегда можно определить, какие именно это службы.Для этого необходимо использовать API сервисов.

Вы можете отключить этот мультихостинг для каждой службы, используя scwuauserv, служба Центра обновления Windows):

sc config wuauserv type= own

Затем вы можете проверить еще раз и узнать, какая именно служба несет ответственность.

Вы также можете переключиться обратно:

sc config wuauserv type= share

решение2

Процесс svchostиспользуется для запуска системных служб. Было бы лучше выяснить, какая системная служба использует этот порт, а затем отключить его навсегда (если он не приносит пользы).

Вы можете узнать это, посмотрев на командную строку процесса svchost.exe . -kПараметр идентифицирует системную службу.

Вы уже поняли, как получить идентификатор процесса, который использует порт. Чтобы получить командную строку, запустите PowerShell от имени администратора и введите следующую команду (пример для процесса 4680):

gcim win32_process | Where-Object {$_.processid -eq 4680} | select commandline

Полезная утилита с графическим интерфейсом — Обозреватель процессов.

Связанный контент