タスク マネージャーからプロセスを見たことがある方は 1 度は目にしたことがあるであろう exe のひとつに svchost.exe というものがあります。
それでは、「svchost.exe って何? 」 という質問に答えられますでしょうか?
この記事は、この質問に答えられない Windows ビギナーの方に読んでほしい内容となっています。
svchost.exe そのものは怪しいプログラムでもなければ、ウイルスでもありません。 ただし、正体を知らずに終了させるのは危険です。
・svchost.exe が大量に表示されて不安 ・CPU やメモリを大量に使っている ・終了してもいいのか分からない
この記事では、こうした疑問を持つ Windows 初心者に向けて、svchost.exe の正体と安全な確認方法を解説します。
- svchost.exe を一言で言うと
- なぜ svchost.exe が何個も表示されているのか
- 【中級者向け】 1 つの svchost.exe でたくさんのサービスをホストすることもある
- まとめ
- 関連記事
svchost.exe を一言で言うと
早速ですが、先ほどの質問の回答をします。
svchost.exe とは サービス (SerViCe) をホストするプロセスです。
……(´・ω・`)
…………(´・ω・`)
で?どういうこと?
名前読み上げただけじゃん。
そうお思いの方は大正解です。
svchost.exe はその名前の通りの動きをします。
サービスをホストするとは、何かのサービスの機能を提供するということです。
svchost.exe は何かのサービスと合わせて初めて意味を成す
先ほど 「何かのサービスを提供する」 と言いました。
Windows にはサービスという、バックグラウンドで動くプロセスがたくさん存在します。
Windows では、基本的に「exe ファイル」しか直接実行できません。 (ダブルクリックして起動できるもの、と思っていただいて構いません)
一方で、Windows のサービスの中には dll という形式で提供されているものもあります。
そのため、dll など exe 以外の形式で提供されているサービスについては、この svchost.exe がその dll を読み込んであげて動かす必要があるわけです。
これがサービスをホストするということです。
なぜ svchost.exe が何個も表示されているのか
ここからはコマンド プロンプトの内容を見ながら説明します。
コマンド プロンプトにて tasklist /FI "IMAGENAME eq svchost.exe" と入力すると以下のような表示が出てきます。
C:\Windows\System32>tasklist /FI "IMAGENAME eq svchost.exe" イメージ名 PID セッション名 セッション# メモリ使用量 ========================= ======== ================ =========== ============ svchost.exe 2116 Services 0 63,396 K svchost.exe 2292 Services 0 27,120 K svchost.exe 2348 Services 0 10,976 K svchost.exe 2472 Services 0 10,924 K svchost.exe 2480 Services 0 6,888 K svchost.exe 2500 Services 0 8,888 K svchost.exe 2536 Services 0 12,356 K svchost.exe 2556 Services 0 33,992 K svchost.exe 2568 Services 0 21,412 K svchost.exe 2708 Services 0 14,316 K svchost.exe 2796 Services 0 10,872 K <中略> svchost.exe 18704 Services 0 19,128 K
tasklist コマンドは今動いているプロセスを表示するコマンド、 /FI パラメーターはフィルター機能です。
これで "イメージ名" が svchost.exe に合致するものだけをフィルターして表示しています。
これは Windows の安定性やセキュリティのために、動作させるサービスごとに svchost.exe を分けて起動しているからです。
初心者向けはここまで。
次の章からは中級からちょい上級者向けのお話がありますが、興味のある方はご覧ください。
サービスについて
ではサービスについてどのようなものがあるかという点についても、本ブログでは少しずつ紹介しています。
ホストされるサービスとは何か、止めてもよいのかという判断基準も含めて以下に公開しておりますので、ぜひご覧ください。
【中級者向け】 1 つの svchost.exe でたくさんのサービスをホストすることもある
それでは次に、コマンドを少しだけ変えてみましょう。
tasklist /SVC /FI "IMAGENAME eq svchost.exe" と実行します。
すると表示が以下のように変わりますね。
C:\Windows\System32>tasklist /SVC /FI "IMAGENAME eq svchost.exe"
イメージ名 PID サービス
========================= ======== ============================================
svchost.exe 2116 BrokerInfrastructure, DcomLaunch, Power,
SystemEventsBroker
svchost.exe 2292 RpcEptMapper, RpcSs
svchost.exe 2348 LSM
svchost.exe 2472 BDESVC
svchost.exe 2480 HvHost
svchost.exe 2500 nsi
svchost.exe 2536 BTAGService
svchost.exe 2556 BthAvctpSvc
<中略>
svchost.exe 23724 DoSvc
svchost.exe 17276 UsoSvc
svchost.exe 21676 whesvc
svchost.exe 17096 wscsvc
svchost.exe 24688 OneSyncSvc_eb3f6,
PimIndexMaintenanceSvc_eb3f6,
UnistoreSvc_eb3f6, UserDataSvc_eb3f6
svchost.exe 8580 DevicesFlowUserSvc_eb3f6
svchost.exe 25688 DsSvc
svchost.exe 26684 WebClient
svchost.exe 31644 PrintWorkflowUserSvc_eb3f6
svchost.exe 38404 W32Time
svchost.exe 2956 NetSetupSvc
svchost.exe 25772 AppXSvc
svchost.exe 16108 CaptureService_eb3f6
svchost.exe 38284 WdiSystemHost
svchost.exe 24824 wuauserv
svchost.exe 29712 ClipSVC
これは、どの svchost.exe でどのサービスが動いているかを確認することができます。
ここできっと目につくのが PID (Process ID) 2116 と 24688 だと思います。
そう、この 2 つだけは複数のサービスが 1 つの svchost.exe 上で動いています。
ご覧いただいたように、1 つの svchost.exe 上で複数のサービスが動作していることがあります。 これにより、実行するプロセス数が減り、システムのリソースの節約につながります。
※ サービス名の後ろについている "_eb3f6" は、ユーザー固有のサービスであることを示しており、ランダムに割り当てられる値になります。
【上級者向け】サービスの分離
複数のサービスが 1 つの svchost.exe で動くと、プロセスが 1 つになることでシステムのリソースの節約につながることは先ほどご説明しました。
しかしながら、その 1 つの svchost.exe が何らかの要因でクラッシュしてしまった場合、複数のサービスが一括で落ちてしまうことを示します。
これで困ることの一例として、調査のために特定のサービスのプロセス ダンプを取得することを目的として わざと svchost.exe をクラッシュさせる場合 などがあります。
そのような場合にはサービスを独立した 1 つの svchost.exe に分離する必要があります。
サービスを分離するには以下のようなコマンドをコマンド プロンプトから実行することになります。
sc config <サービス名> type= own
そしてこの分離したサービスを元に戻すときは以下のコマンドを実行します。
sc config <サービス名> type= share
まとめ
svchost.exe とは、サービスの機能を提供するための exe ファイルです。
そのため、安易に終了させてしまうと、大事なサービスまで終了してしまう可能性があるため、注意が必要です。
また、svchost.exe 自体は何の役割も持たないため、例えばタスク マネージャーで svchost.exe がリソースを多く消費していたとしても、「svchost.exe がおかしい」 では何の情報も提供できていません。
tasklist /SVC /FI "IMAGENAME eq svchost.exe" コマンドで、svchost.exe の PID を確認してからタスク マネージャーと突合するなど事前情報をしっかり集めることで初めてトラブルシュートの提案ができるというものです。
svchost.exe 自体は機能をもたないという少し変わったプロセスですが、Windows を利用するうえでは覚えておいて損はない知識かと思います。
関連記事
タスク マネージャーを見ていると、svchost.exe 以外にも「これって本当に大丈夫?」と思うプロセスがいくつか表示されます。 その代表例が RuntimeBroker.exe です。
svchost.exe は Windows のサービスをまとめてホストする役割を持つプロセスですが、RuntimeBroker.exe は ストア アプリ(UWP)と Windows の間を仲介するためのプロセスです。 RuntimeBroker.exe は、ストア アプリの権限管理やWindows との安全な通信を担当しており、複数起動していても異常ではありません。
詳しくは、RuntimeBroker.exe の役割や「複数起動しているのは問題なのか?」について解説した以下の記事をご覧ください。