別の回答に従って、コンピューターの起動時にポート 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 Update サービス):
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ユーティリティは プロセスエクスプローラー。