「COMサロゲート」(dllhost.exe)とは何ですか?PCで実行されているのはなぜですか?

タスクマネージャーをざっと見てみると、WindowsPCで実行されている1つ以上の「COMサロゲート」プロセスが表示される可能性が高くなります。これらのプロセスのファイル名は「dllhost.exe」で、Windowsオペレーティングシステムの一部です。それらは、Windows 10、Windows 8、Windows 7、およびそれ以前のバージョンのWindowsでも表示されます。

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

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

COMサロゲート(dllhost.exe)とは何ですか?

COMは、Component ObjectModelの略です。これは、Microsoftが1993年に導入したインターフェイスであり、開発者はさまざまなプログラミング言語を使用して「COMオブジェクト」を作成できます。基本的に、これらのCOMオブジェクトは他のアプリケーションにプラグインして拡張します。

たとえば、Windowsファイルマネージャは、フォルダを開くときにCOMオブジェクトを使用して画像やその他のファイルのサムネイル画像を作成します。COMオブジェクトは、画像、ビデオ、およびその他のファイルを処理してサムネイルを生成します。これにより、たとえば、新しいビデオコーデックをサポートするようにファイルエクスプローラーを拡張できます。

ただし、これは問題を引き起こす可能性があります。COMオブジェクトがクラッシュすると、ホストプロセスが停止します。ある時点で、これらのサムネイル生成COMオブジェクトがクラッシュし、Windowsエクスプローラープロセス全体がダウンするのが一般的でした。

この種の問題を修正するために、MicrosoftはCOMサロゲートプロセスを作成しました。 COMサロゲートプロセスは、COMオブジェクトを要求した元のプロセスの外部で実行します。 COMオブジェクトがクラッシュした場合、COMサロゲートプロセスのみが停止し、元のホストプロセスはクラッシュしません。たとえば、Windowsエクスプローラー(現在はファイルエクスプローラーと呼ばれています)は、サムネイル画像を生成する必要があるときはいつでもCOMサロゲートプロセスを開始します。 COMサロゲートプロセスは、作業を行うCOMオブジェクトをホストします。 COMオブジェクトがクラッシュすると、COMサロゲートのみがクラッシュし、元のファイルエクスプローラープロセスが追跡を続けます。

「言い換えれば」、Microsoftの公式ブログThe Old New Thingが述べているように、「COMサロゲートは、 このコードについて気分が悪いので、COMに別のプロセスでホストするように依頼します。そうすれば、クラッシュした場合、私の プロセスではなく、COMサロゲートの犠牲プロセスがクラッシュします。」

また、ご想像のとおり、COMサロゲートはホストするCOMオブジェクトが.dllファイルであるため、「dllhost.exe」という名前が付けられています。

COMサロゲートがホストしているCOMオブジェクトを確認するにはどうすればよいですか?

標準のWindowsタスクマネージャーでは、COMサロゲートプロセスがホストしているCOMオブジェクトまたはDLLファイルに関する情報は提供されません。この情報を確認したい場合は、MicrosoftのProcessExplorerツールをお勧めします。ダウンロードすると、Process Explorerでdllhost.exeプロセスにマウスを合わせるだけで、ホストしているCOMオブジェクトまたはDLLファイルを確認できます。

以下のスクリーンショットでわかるように、この特定のdllhost.exeプロセスはCortanaMapiHelper.dllオブジェクトをホストしています。

無効にできますか?

COMサロゲートプロセスはWindowsの必要な部分であるため、無効にすることはできません。これは、他のプロセスが実行したいCOMオブジェクトを実行するために使用される単なるコンテナプロセスです。たとえば、Windowsエクスプローラー(またはファイルエクスプローラー)は、フォルダーを開いたときにサムネイルを生成するCOMサロゲートプロセスを定期的に作成します。使用する他のプログラムも、独自のCOMサロゲートプロセスを作成する場合があります。システム上のすべてのdllhost.exeプロセスは、プログラムが実行したいことを実行するために別のプログラムによって開始されました。

ウイルスですか?

COMサロゲートプロセス自体はウイルスではなく、Windowsの通常の部分です。ただし、マルウェアによって使用される可能性があります。たとえば、Trojan.Poweliksマルウェアは、dllhost.exeプロセスを使用してダーティな作業を行います。多数のdllhost.exeプロセスが実行されていて、それらがかなりの量のCPUを使用している場合は、COMサロゲートプロセスがウイルスまたはその他の悪意のあるアプリケーションによって悪用されていることを示している可能性があります。

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

マルウェアがdllhost.exeまたはCOMサロゲートプロセスを悪用していることが懸念される場合は、お好みのウイルス対策プログラムでスキャンを実行して、システムに存在するマルウェアを見つけて削除する必要があります。選択したウイルス対策プログラムですべてが正常であると表示されているが、疑わしい場合は、別のウイルス対策ツールでスキャンを実行してセカンドオピニオンを取得します。