サービスホストプロセス(svchost.exe)とは何ですか?また、なぜこれほど多くのプロセスが実行されているのですか?

タスクマネージャーを参照したことがある場合は、なぜこれほど多くのサービスホストプロセスが実行されているのか疑問に思われるかもしれません。あなたはそれらを殺すことはできません、そしてあなたは確かにそれらを始めませんでした。それで、彼らは何ですか?

サービスホストプロセスは、DLLファイルからサービスをロードするためのシェルとして機能します。サービスは関連するグループに編成され、各グループはサービスホストプロセスの異なるインスタンス内で実行されます。そうすれば、あるインスタンスの問題が他のインスタンスに影響を与えることはありません。このプロセスはWindowsの重要な部分であり、実行を妨げることはできません。 

この記事は、dwm.exe、ctfmon.exe、mDNSResponder.exe、conhost.exe、rundll32.exe、Adobe_Updater.exeなど、タスクマネージャーにあるさまざまなプロセスを説明する継続的なシリーズの一部です。それらのサービスが何であるかわからないのですか?読み始めたほうがいいです!

では、サービスホストプロセスとは何ですか?

Microsoftによると、答えは次のとおりです。

Svchost.exeは、ダイナミックリンクライブラリから実行されるサービスの一般的なホストプロセス名です。

しかし、それは私たちにはあまり役に立ちません。少し前に、MicrosoftはWindowsの機能の多くを内部のWindowsサービス(EXEファイルから実行)に依存することから、代わりにDLLファイルを使用するように変更し始めました。プログラミングの観点からは、これによりコードがより再利用可能になり、間違いなく最新の状態に保つことが容易になります。問題は、実行可能ファイルと同じように、Windowsから直接DLLファイルを起動できないことです。代わりに、実行可能ファイルからロードされるシェルを使用して、これらのDLLサービスをホストします。そのため、サービスホストプロセス(svchost.exe)が誕生しました。

実行中のサービスホストプロセスが非常に多いのはなぜですか?

関連:このプロセスとは何ですか?なぜそれが私のPCで実行されているのですか?

コントロールパネルの[サービス]セクションを見たことがあれば、Windowsには多くのサービスが必要であることに気付いたと思います。すべてのサービスが1つのサービスホストプロセスで実行された場合、1つのサービスで障害が発生すると、すべてのWindowsがダウンする可能性があります。代わりに、それらは分離されています。

サービスは、すべてある程度関連している論理グループに編成され、各グループをホストするために単一のサービスホストインスタンスが作成されます。たとえば、1つのサービスホストプロセスがファイアウォールに関連する3つのサービスを実行します。別のサービスホストプロセスは、ユーザーインターフェイスなどに関連するすべてのサービスを実行する場合があります。たとえば、次の画像では、1つのサービスホストプロセスが複数の関連するネットワークサービスを実行し、別のプロセスがリモートプロシージャコールに関連するサービスを実行していることがわかります。

このすべての情報を私がするために何かありますか?

関連:PCを高速化するためにWindowsサービスを無効にする必要がありますか?

正直なところ、それほど多くはありません。Windows XP(および以前のバージョン)の時代には、PCのリソースがはるかに限られていて、オペレーティングシステムがそれほど微調整されていなかったため、Windowsが不要なサービスを実行しないようにすることが推奨されることがよくありました。最近では、サービスを無効にすることはお勧めしません。最近のPCには、メモリと高性能プロセッサが搭載されている傾向があります。これに加えて、最新バージョンでのWindowsサービスの処理方法(および実行されるサービス)が合理化されており、不要と思われるサービスを排除しても、それほど大きな影響はありません。

ただし、Service Hostの特定のインスタンス(または関連するサービス)がCPUまたはRAMの継続的な過剰使用などの問題を引き起こしていることに気付いた場合は、関連する特定のサービスをチェックインできます。これで、少なくともトラブルシューティングをどこから始めればよいかがわかるかもしれません。サービスホストの特定のインスタンスによってホストされているサービスを正確に確認するには、いくつかの方法があります。タスクマネージャー内で、またはProcessExplorerという名前の優れたサードパーティアプリを使用して確認できます。

タスクマネージャで関連サービスを確認する

Windows 8または10を使用している場合、プロセスはタスクマネージャーの[プロセス]タブにフルネームで表示されます。プロセスが複数のサービスのホストとして機能する場合は、プロセスを拡張するだけでそれらのサービスを確認できます。これにより、サービスホストプロセスの各インスタンスに属するサービスを非常に簡単に識別できます。

個々のサービスを右クリックしてサービスを停止したり、「サービス」コントロールパネルアプリで表示したり、サービスに関する情報をオンラインで検索したりすることもできます。

Windows 7を使用している場合は、状況が少し異なります。Windows 7タスクマネージャーは、プロセスを同じ方法でグループ化せず、通常のプロセス名も表示しませんでした。実行中の「svchost.exe」のすべてのインスタンスのみを表示しました。「svchost.exe」の特定のインスタンスに関連するサービスを特定するには、少し調査する必要がありました。

Windows 7のタスクマネージャーの[プロセス]タブで、特定の「svchost.exe」プロセスを右クリックし、[サービスに移動]オプションを選択します。

これにより、[サービス]タブに移動し、その「svchost.exe」プロセスで実行されているサービスがすべて選択されます。

次に、[説明]列に各サービスのフルネームが表示されるので、サービスを実行したくない場合はサービスを無効にするか、問題が発生する理由をトラブルシューティングするかを選択できます。

ProcessExplorerを使用して関連サービスを確認する

Microsoftは、Sysinternalsラインナップの一部として、プロセスを操作するための優れた高度なツールも提供しています。Process Explorerをダウンロードして実行するだけです。これはポータブルアプリなので、インストールする必要はありません。Process Explorerは、あらゆる種類の高度な機能を提供します。詳細については、ProcessExplorerを理解するためのガイドを読むことを強くお勧めします。

関連:「ポータブル」アプリとは何ですか、なぜそれが重要なのですか?

ただし、ここでの目的のために、ProcessExplorerは関連するサービスを「svchost.exe」の各インスタンスの下にグループ化します。それらはファイル名でリストされていますが、フルネームも「説明」列に表示されます。また、マウスポインターを「svchost.exe」プロセスのいずれかに合わせると、そのプロセスに関連するすべてのサービス(現在実行されていないサービスも含む)を含むポップアップが表示されます。

このプロセスはウイルスである可能性がありますか?

プロセス自体は、公式のWindowsコンポーネントです。ウイルスが実際のサービスホストを独自の実行可能ファイルに置き換えた可能性はありますが、その可能性はほとんどありません。確認したい場合は、プロセスの基になるファイルの場所を確認できます。タスクマネージャーで、任意のサービスホストプロセスを右クリックし、[ファイルの場所を開く]オプションを選択します。

ファイルがWindows \ System32フォルダーに保存されている場合は、ウイルスに対処していないことをかなり確信で​​きます。

関連:Windows 10に最適なアンチウイルスは何ですか?(Windows Defenderで十分ですか?)

それでももう少し安心したい場合は、お好みのウイルススキャナーを使用していつでもウイルスをスキャンできます。転ばぬ先の杖!