尋找 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。

您可以使用sc(與烏奧塞夫,Windows 更新服務):

sc config wuauserv type= own

然後您可以再次檢查並查看到底是哪個服務負責。

您也可以再次切換回來:

sc config wuauserv type= share

答案2

svchost進程用於運行系統服務。最好找出哪個系統服務正在使用此端口,然後永久禁用它(如果它沒有用)。

您可以透過查看進程的命令列來找到這一點svchost.exe 。此-k參數標識系統服務。

您已經了解如何取得使用該連接埠的進程 ID。若要取得命令列,請以管理員身分執行 PowerShell 並輸入下列命令(進程 4680 的範例):

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

一個有用的 GUI 實用程式是 流程瀏覽器

相關內容