1

Windows で、プロセスが使用しているすべての開いているポート/ソケットを列挙する方法はありますか? アプリで高いポート使用率を追跡しようとしていますが、アプリはほとんど使用していないため、他の DLL がプロセスに読み込まれている必要があります。

4

1 に答える 1

3

Windows 独自のコマンドラインnetstatユーティリティと SysInternals のTCPViewアプリは、開いている各ポートを所有するプロセスの名前を表示できます。

この情報をプログラムで列挙したい場合は、Windows のポート ルーティング テーブルを手動で列挙し、それらをプロセスにマップする必要があります。AllocateAndGetTcpExTableFromStack()XP では、とを使用できますAllocateAndGetUdpExTableFromStack()GetExtendedTcpTable()Vista 以降では、代わりにandを使用できますGetExtendedUdpTable()。どちらの関数セットも、開いている各 IP/ポートのプロセス ID を返すことができます。これを の結果と比較できますGetCurrentProcessId()

于 2012-09-19T19:53:54.683 に答える