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 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ユーティリティは プロセスエクスプローラー

関連情報