【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を使っていることが確認できました。
 
参考までに、、
この操作を何度か試していたら、 コンピュータが起動しないというトラブルに見舞われてしまいました。
あくまでもデバッグの目的で使うにとどめておいたほうがよさそうですね。
 
スポンサーリンク
  • このエントリーをはてなブックマークに追加
  • Evernoteに保存Evernoteに保存

コメント

  1. Taro より:

    はじめまして。いつも参考にさせていただいてます。サービスを止めずに調査出来る方法があるといいですよねー。svchost.exeのPIDからサービス名を特定するのにはtasklistコマンドが便利かなと思います。tasklist /fi "PID eq 828" /svc

  2. Suguru より:

    Taroさん、はじめまして。ここに出てきた方法は、サービスを止めずに調査することができないのが難点です。。ご紹介いただいたtasklistコマンドはProcess Explorerをいちいち起動しなくてもよいので、便利ですね。ありがとうございます!

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*