使用 任务管理器 查看 Windows 计算机上的进程列表是一种偏执症。有很多听起来很奇怪的程序在运行,通常您无法知道什么对您的 PC 好坏。 COM 代理 dllhost.exe 就是这样一个过程,但它比您想象的要平凡得多。

什么是 COM 代理 (dllhost.exe)?
COM 是组件对象模型的缩写。这是微软在 90 年代初引入的,目的是让程序员可以轻松扩展现有软件的功能。换句话说,它有点像一个插件系统,可以让您向现有程序(例如 Windows资源管理器 )添加新功能。
这对于动态改进程序的功能非常有用,但是有一个缺点。如果 COM 模块编码错误或由于某种原因崩溃,它也会使它插入的程序崩溃。这是因为 COM 和主程序都作为一个进程运行。

这就是 COM 代理的用武之地。这种方法让 COM 在它自己的独立进程中运行,就好像这是它自己的程序。主程序和 COM 代理进程根据需要相互通信。但是,如果 COM 代理因任何原因崩溃,除了它自己的进程崩溃之外,它不会导致任何事情。这使得整个系统更加稳定。
COM Surrogate (dllhost.exe) 安全吗?
dllhost.exe 是否安全是一个很难回答的问题,因为它会取决于正在运行的特定 COM。通常,它们托管执行有用操作的良性进程,但代码错误的 COM 或搭载在 COM 代理框架上的恶意软件可能会造成损害或执行恶意代码,这并非不可能。
查找 COM 代理的位置
dllhost.exe 文件只有一个合法位置,它位于 Windows 文件夹中的 System32 文件夹内。默认路径是系统驱动器上的 Windows>System32。系统盘通常是C盘。如果您在其他任何地方找到此文件,则可能是病毒。所以一定要扫描它!

检查 COM 代理的合法性
作为上面提到,您在任务管理器中看到的 COM 代理不是特定的应用程序,它只是另一个进程的外壳。由于我们无法轻松了解特定 COM 代理进程中实际运行的内容,因此检查可疑行为的唯一真正方法是使用防病毒程序。
当然,您应该运行 防病毒程序 无论如何都是定期的,但是如果您看到 COM 代理正在消耗大量资源或导致系统不稳定,这可能是一种解释。
再说一次,COM有问题的代理进程可能只是有问题,而不是恶意的。如果您已保存所有文档,则可以尝试强行结束给定的 COM 代理进程以了解它在做什么。在杀死进程后直接崩溃或挂起的任何东西都可能是相关的程序。确定最有可能的罪魁祸首后,您将需要重新启动计算机。
修复 COM 代理错误
COM 代理错误时有发生,这可能是人们首先搜索进程名称的最常见原因。错误“COM 代理已停止工作”起初可能看起来很神秘。既然您知道 COM 代理做了什么,很明显该进程实际上在做它的工作。
COM 代理旨在保护程序扩展不会使其扩展的主进程崩溃,因此此错误的原因可以可以追溯到代理中运行的任何 COM 模块。

没有简单的方法可以知道它是哪个 COM,因为代理本身掩盖了其中的特定 COM。有几个可能的嫌疑人:
如果您确实想知道如何准确诊断正在运行的 COM在代理中,有一个更具技术性的解决方案。
使用进程资源管理器检查 COM 代理进程的内部
Microsoft 有一个称为 进程浏览器 的可选实用程序。它对各种事情都有用。例如,如果有人告诉您可以删除某个文件夹,因为某个程序打开了它,您可以使用进程资源管理器查看是哪个程序并强制将其关闭,而无需重新启动整个计算机。
只需下载并运行 Process Explorer,您就会看到一个这样的窗口:

请记住,COM Surrogate 实际上称为 dllhost.exe。所以寻找那个并将鼠标指针悬停在条目上。在小弹出窗口中,您将看到托管的是哪个 DLL 文件。通常这会给你足够的信息来知道哪个程序连接到它。如果从 DLL 名称中看不出来,您可以在 Google 上搜索更明确的答案。
COM On Over for a Party
总而言之,您现在知道 COM 是什么,什么是COM 代理可以,如何解决最常见的问题以及如何确定您正在处理的 COM。希望它已经彻底解决了您与 COM 相关的问题。