Windowsのsvchost viewerツールでsvchost.exeプロセスのサービスを調査するTech TIPS

svchost.exeは、OS内の各種サービスを起動するための親となるプロセスで、通常は複数起動している。そのため、トラブル発生時にその原因を把握しにくい。svchost viewerツールでその詳細を調べる方法とは?

» 2010年08月06日 05時00分 公開
[小林章彦デジタルアドバンテージ]
Tech TIPS
Windows Server Insider


「Tech TIPS」のインデックス

連載目次

対象OS:Windows XP / Windows Vista / Windows 7 / Windows Server 2003 / Windows Server 2008 / Windows Server 2008 R2



解説

 タスクマネージャを起動し、[プロセス]タブを開くと、現在実行されているプロセスが表示される。[イメージ名]を見ると、さまざまなプロセスが起動していることが分かるが、「svchost.exe」というイメージ名で複数のプロセスが起動していることにも気付くはずだ。

 svchost.exeは、OS内の各種サービスを起動するための親となるプロセスで、OS起動時にsvchost.exeを経由して、各種サービスが起動するようになっている。svchost.exe経由で起動するサービスは幾つかのグループに分かれており、同一グループに属するサービスは同時に起動される。

 実は、何らかの障害が発生した場合、この仕組みが問題解決を難しくする。少々古い話になるが、自動更新やWindows Update/Microsoft Updateの不具合により、あるsvchost.exeによってCPU占有率が100%になってしまい、システムが重くなったり、応答しなくなってしばらく使えなくなるという症状が報告されたことがある(TIPS「自動更新などでCPU負荷が100%になる不具合を修正する」参照)。タスクマネージャを見ても、svchost.exeのCPU占有率が100%になっていることが分かるだけで、上記の仕組みから何のサービスが原因なのか分からないのだ。そういった際に問題となっている「svchost.exe」の正体を探る方法を知っていると問題解決の役に立つ。

 svchost.exeプロセスを表示するツールには複数があるが、本稿ではCodePlexで配布されている無償ツール「svchost viewer」を紹介する。

操作方法

 CodePlexの以下のWebページの右側の[Download]ボタンをクリックし、インストールパッケージを適当なフォルダにダウンロードする。執筆現在提供されていたのは、Ver. 0.3.0.0で、ファイル名はsvchost_viewer_ver_0.3.0.0_RC1.zipである。Webページの[Downloads]タブでは、ベータ版ではあるがさらにバージョンが新しいsvchost viewer Ver. 0.5.0.1も配布されている。機能的には大きな違いはないようなので、ここでは安定版であるVer. 0.3.0.0を取り上げる。

 svchost_viewer_ver_0.3.0.0_RC1.zipを解凍すると、実行ファイルの「svchost viewer.exe」が展開される。この実行ファイルだけで、svchost.exeプロセスを表示するsvchost viewerツールが起動できる。インストールは不要なので、USBメモリなどにsvchost viewer.exeを保存しておけば、障害が発生したコンピュータ上でsvchost.exeプロセスを確認することも可能だ。なお実行には、Microsoft .NET Framework 2.0以上が必要となる。

svchost viewerツールの画面 svchost viewerツールの画面
左ペインには、実行されているsvchost.exeのプロセスが一覧表示される。「+」部分をクリックして展開すると、そのsvchost.exeで実行されているサービスが確認できる。右ペインには、選択したサービスの情報が表示される。
  (1)実行されているsvchost.exeのプロセスが一覧。
  (2)選択したサービスの名前。
  (3)[サービスの状態]がチェックボックスで表される。ただし、これは設定の確認のために表示されているチェックボックスであり、ここで設定を変更できるわけではない。
  (4)サービスの詳細説明。

 では、Windows Vista/7/Server 2008/Server 2008 R2でsvchost viewerツールを利用して、問題が発生しているsvchost.exeプロセス(サービス)を確認する方法を紹介しよう。

 まず[タスク マネージャ]を起動して[プロセス]タブを開き、CPU占有率が異常に高いなど、問題が発生しているsvchost.exeプロセスを確認する。なお、svchost.exeプロセスを表示させるには、あらかじめ[プロセス]タブの最下部にある[すべてのユーザーのプロセス]というボタンをクリックしておく(以下の画面は、クリック後の状態。最下部には[全ユーザーのプロセスを表示する]というチェックボックスが表示されている)。

Windows 7のタスクマネージャの[プロセス]タブの画面 Windows 7のタスクマネージャの[プロセス]タブの画面
タスクマネージャの[プロセス]タブを開くと、複数のsvchost.exeプロセスがあることが分かる。
  (1)[プロセス]タブを開く。
  (2)複数のsvchost.exeプロセスが実行されている。
  (3)CPU占有率が高いなど、問題が生じているsvchost.exeプロセスを右クリックし、メニューから[サービスの表示]を選択する。→[A]

 次に、そのsvchost.exeプロセスを右クリックし、メニューから[サービスの表示]を選択する。すると、タスクマネージャの[サービス]タブが開き、そのsvchost.exeプロセスで実行されているサービスがハイライト表示される。ここで、そのサービスのPIDをメモしておく。

[A]

Windows 7のタスクマネージャの[サービス]タブの画面 Windows 7のタスクマネージャの[サービス]タブの画面
タスクマネージャの[サービス]タブが開き、右クリックしたsvchost.exeプロセスで実行されているサービスがハイライト表示される。
  (1)[サービス]タブが開く。
  (2)右クリックしたsvchost.exeプロセスで実行されているサービスがハイライト表示される。
  (3)PIDを確認する。→[B]

 ここでsvchost viewerツールを起動し、タスクマネージャの[サービス]タブでメモしたPIDを持つsvchost.exeプロセスを展開し、実行されているサービスの内容を確認する。この際、不審なサービスであれば、ウイルスなどの可能性もあるので、サービス名などをインターネットで調べて、サービスを停止するなどの対処方法を考える。

[B]

svchost viewerツールで該当するPIDのサービスを確認する svchost viewerツールで該当するPIDのサービスを確認する
タスクマネージャの[サービス]タブで確認したPIDを持つ、svchost.exeを左ペインから探して、サービスの詳細を調べる。不審なサービスであれば、ウイルスなどの可能性もあるので、サービス名などをインターネットで調べて対処方法を考える。
  (1)[サービス]タブで確認したPIDを持つ、svchost.exeを左ペインから探す。
  (2)この1つ1つが、同じsvchost.exeプロセスの下で動作しているサービス。
  (3)右側のペインでサービスの詳細を確認する。

 なおWindows XP/Windows Server 2003のタスクマネージャには[サービス]タブがなく、Windows Vista/7のようにタスクマネージャでサービスに関する情報を表示できない。それでも、svchost.exeプロセスのPIDやCPU占有率、メモリサイズなどは表示([表示]−[列の選択]で追加できる)されるので、それを元にしてsvchost viewerツールで内容を確認するとよい。

「Tech TIPS」のインデックス

Tech TIPS

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。