什么是“ COM Surrogate”(dllhost.exe),为什么它在我的PC上运行?

如果您在任务管理器中四处浏览,很有可能会在Windows PC上看到一个或多个“ COM Surrogate”进程。这些进程的文件名为“ 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代表组件对象模型。这是Microsoft早在1993年引入的界面,允许开发人员使用多种不同的编程语言创建“ COM对象”。本质上,这些COM对象可插入其他应用程序并对其进行扩展。

例如,Windows文件管理器在打开文件夹时使用COM对象创建图像和其他文件的缩略图。 COM对象处理图像,视频和其他文件的处理以生成缩略图。例如,这使File Explorer可以扩展为支持新的视频编解码器。

但是,这可能会导致问题。如果COM对象崩溃,它将取消其宿主进程。在某一时刻,这些生成缩略图的COM对象崩溃并带走它们的整个Windows资源管理器过程是很常见的。

为了解决这种问题,Microsoft创建了COM Surrogate进程。 COM Surrogate进程在请求它的原始进程之外运行COM对象。如果COM对象崩溃,它将仅关闭COM Surrogate进程,并且原始宿主进程不会崩溃。例如,Windows资源管理器(现在称为文件资源管理器)在需要生成缩略图时会启动COM代理过程。 COM Surrogate进程承载完成工作的COM对象。如果COM对象崩溃,则只有COM Surrogate崩溃,并且原始的文件资源管理器进程将继续运行。

正如Microsoft官方博客The Old New Thing所说,“换句话说”,“ COM Surrogate是我对这段代码不太满意,因此我将要求COM将其托管在另一个进程中。这样,如果它崩溃了,那就是COM Surrogate牺牲过程崩溃了,而不是我 过程。”

而且,您可能已经猜到了,COM Surrogate被命名为“ dllhost.exe”,因为它托管的COM对象是.dll文件。

我如何知道一个COM代理托管在哪个COM对象上?

标准的Windows任务管理器不会为您提供有关COM Surrogate进程承载哪个COM对象或DLL文件的更多信息。如果您想查看此信息,建议使用Microsoft的Process Explorer工具。下载它,您只需将鼠标悬停在Process Explorer中的dllhost.exe进程上,即可查看其托管的COM对象或DLL文件。

正如我们在下面的屏幕快照中看到的那样,该特定的dllhost.exe进程托管了CortanaMapiHelper.dll对象。

我可以禁用它吗?

您无法禁用COM Surrogate进程,因为它是Windows的必要部分。它实际上只是一个容器进程,用于运行其他进程要运行的COM对象。例如,Windows资源管理器(或文件资源管理器)会定期创建COM代理进程,以在您打开文件夹时生成缩略图。您使用的其他程序也可能会创建自己的COM Surrogate进程。系统上的所有dllhost.exe进程均由另一个程序启动,以执行该程序想要完成的操作。

是病毒吗?

COM Surrogate进程本身不是病毒,并且是Windows的正常部分。但是,它可以被恶意软件使用。例如,Trojan.Poweliks恶意软件使用dllhost.exe进程来完成其肮脏的工作。如果您看到大量dllhost.exe进程正在运行,并且它们使用的CPU数量明显,则表明COM Surrogate进程已被病毒或其他恶意应用程序滥用。

有关的:什么是Windows 10最佳防病毒软件? (Windows Defender是否足够好?)

如果您担心恶意软件滥用了dllhost.exe或COM Surrogate进程,则应使用首选的防病毒程序运行扫描,以查找并删除系统上存在的所有恶意软件。如果您选择的防病毒程序显示一切正常,但您可疑,请使用另一种防病毒工具进行扫描以获取其他意见。