我按照另一個答案找到了啟動電腦時使用連接埠 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 實用程式是 流程瀏覽器。