web-dev-qa-db-ja.com

システムプロセスがポートを使用しているのはなぜですか? Windows 7

システムプロセスとしてどのサービスがポートをリッスンするかを見つける一般的な方法はありますか?

私の場合、システムプロセスPID 4はポート443(https)でリッスンしているため、このポートを必要とする別のプログラムを起動できません。

以前は、システムがこのポートを使用していなかったため、別のプログラムを使用できました。

システムがそのポートをリッスンする原因をどのように把握できますか?

netstat -a -b -o昇格したプロンプトショーの下で実行

TCP 0.0.0.0:443 MyComputerName:0 LISTENING 4
Can not obtain ownership information

Apacheをインストールしましたが、停止しても何も変わりません。 IISアンインストールしました。他の容疑者はSkype、CrashPlan、MySQLサーバーですが、この問題を引き起こすことなく、このコンピューターで何年も実行されています。Skypeのオプション[_] Use port 80 and 443はオフになっています。 CrashPlanをスリープ状態にしても、ポートは解放されません。

StackOverflowで この質問 と質問しましたが、そこではトピックから外れていると見なされました。

ポート80には 同様の質問 がありますが、そこにある答えは、これまたはその特定のサービスを停止することだけであり、別のポートに一般化されていません。

別の 同様の質問 がありますが、その場合、OPはnetstat -abが接続のソースとしてsvchost.exeを示しているとコメントし、私の場合、どの答えも問題を解決しません。

2

私の読書から、複数の原因が考えられます。たとえば、 Corneliusの質問:「システムプロセスがポート443でリッスンしているのはなぜですか?」 を読んだ後、少なくともこれら3つの異なる原因がそのようなことにつながる可能性があるという印象を受けます。

  • IIS(MicrosoftのWebサーバー)に関連するHTTP.SYS
  • 着信VPN接続を受け入れるネットワーク接続。 (おそらく、「ルーティングとリモートアクセス」であるRRASの一部である「リモートアクセス」に関連していますか?)
  • Skype(写真については、私の回答の前半にあるハイパーリンクを参照してください)。

これらには、Microsoftコードの使用や、おそらく低レベルのドライバーの使用など、いくつかの一般的な要因があると思います。

狩りをするのではなく、ただチェックする方法が必要だと思います。 TCP/IPスタックはトラフィックの送信先を認識している必要があり、netstatコマンドを使用してTCP/IPスタックが何を実行するかを確認できます。残念ながら、netstatコマンドが提供するのはシステム全体のPIDだけであり、これは「システム」という名前のプロセスを指し示します。同様に、「システム」プロセスには、トラフィックの送信先のドライバーを知る方法が必要だと思います。私はまだそれをチェックする方法を見つけていません。

その間、私が見つけた複数の考えられる原因を指摘したいと思いました。うまくいけば、それらの1つがあなたが探している答えを見つけることにつながるでしょう。

注:この原因を見つけた方法は、Superuser.comが右側のフレームに表示する有望な「関連」アイテムのいくつかを調べることでした。 Stack Exchangeの基本的なルールの1つは、独自の事前調査を試すことです。もう1つの良いルールは、質問を投稿した後、右側のフレームの「関連」というセクションを確認することです。IMHOStackExchangeは、非常に話題の質問を頻繁に見つけるのに非常に優れています。

私のMicrosoftWindowsシステムでは、PID 4もシステムプロセスに属しているため、特定のPIDが非常にランダムであるようには見えません。

この質問の残りの部分では、システムで確認したいくつかのことを説明しています。あなた(Alexander Gelbukh)は、これのほとんどまたはすべてをすでに理解していると言えるので、あまり役に立ちません。ただし、netstatの出力は完全で十分な解決策ではないため、解決策としてnetstatをやみくもに推奨する傾向が少ないことを読んでいる人がいることを願っています(TCP/IPのプロセスを特定する以上のことを行う必要があるため)ネットワークスタックはトラフィックをに送信します)。

netstat -bCan not obtain ownership informationと言う理由は複数あると思います。たとえば、UACの昇格がないことなどです(少なくとも一部のバージョンのMicrosoft Windowsでは、昇格せずに実行すると異なる結果が得られます。 :netstatはすぐにThe requested operation requires elevation.と言い、2行の空白行を表示して、終了します。)

私はあなたと同じ結果を得ています:私が昇格して走るとき、私はPID4の結果を見ることができないようです。

Proto Local Address Foreign Address State PID TCP 0.0.0.0:135 0.0.0.0:0 LISTENING 996 RpcSs [svchost.exe] TCP 0.0.0.0:445 0.0.0.0:0 LISTENING 4 Can not obtain ownership information TCP 0.0.0.0:8732 0.0.0.0:0 LISTENING 4 Can not obtain ownership information

(これは、PID 996がsvchost.exeであることを示していますが、PID 4に関する情報はありません。)

C:>tasklist /SVC | more

Image Name PID Session Name Session# Mem Usage ========================= ======== ================ =========== ============ System Idle Process 0 Services 0 4 K System 4 Services 0 4,828 K
C:\WINDOWS\system32>powershell "Get-NetTCPConnection -LocalPort 445 | Format-List"

LocalAddress : :: LocalPort : 445 RemoteAddress : :: RemotePort : 0 State : Listen AppliedSetting : OwningProcess : 4 CreationTime : 3/2/2017 9:56:19 PM OffloadState : InHost

C:\WINDOWS\system32>

1
TOOGAM