【QAコーナー】特定のポート番号を利用しているサービスを調べる方法(2)

 
この文章を書いている今、「猫の日」である2月22日が終わろうとしています。
今日が「猫の日」であることをすっかり忘れていましたが、
それどころか、Active Directory誕生10周年である2月18日もすっかり忘れていました!
 
 
その続きです。
 
特定のポート番号を利用しているサービスがsvchost.exeに関連づけられているサービスの場合、
svchost.exe自体に複数のサービスが関連づけられていて、
結局、どのサービスに、どのポート番号が割り当てられているのか、わからない場合があります。
 
例えば、netstatコマンドで、49153番ポートを開けているのは、PID828だということはわかったけど…
 
 
Process ExplorerでServices一覧を見てみると、3つもサービスが!
これでは、どのサービスがポートを開けているのか、わからないですね。
 
 
確認方法としては、(私の思いつくところでは)次のいずれかのやり方があると思います。
(探してみれば、もっと色々なやり方があると思いますが。。)
 
■その1:svchost.exeに関連づけられているサービスを止めてみる
1つのsvchost.exeに関連づけられているサービスが多くなければ、一番確実な方法ですね。
ちなみに、上のケースではDhcpサービスとlmhostsサービスを止めてみました。
すると、未だにポートは開いたままになっていたので、
eventlogサービスが49153番を使っているということがわかりました。
 
 
 
■その2:svchost.exeに関連づけられているサービスを分割する
この方法は、マイクロソフトのサポート技術情報に関連する情報が掲載されています。
 
Windows XP Professional Edition の Svchost.exe の詳細
 
サポート技術情報に記載されている内容に沿って、
実際にsvchost.exeを個々のサービスごとに分割して、追跡してみたいと思います。
 
 
この中から、いくつかのサービスをLocalServiceNetworkRestrictedキーから削除し、
(具体的にはeventlogサービスを除く、すべてのサービスを削除)再起動してみました。
すると、同様にeventlogサービス単独でsvchost.exeを使うようになり、
ポート49153を使っていることが確認できました。
 
参考までに、、
この操作を何度か試していたら、 コンピュータが起動しないというトラブルに見舞われてしまいました。
あくまでもデバッグの目的で使うにとどめておいたほうがよさそうですね。