如何在注册表中不存在CLSID时查找DLL

时间:2015-02-13 14:43:15

标签: c++ com registry windows-server-2012 clsid

其中一个系统服务在他的日志中报告它已加载了一些对象。在提到的日志中还有加载对象的CLSID(值为1CECAF7C-B7A0-4B81-912D-78F202E3F0EA,另见截图:

当然,首先我在注册表中搜索了这个值(我也是this Stack Overflow question)。 但我找不到它,可能这个值根本不存在于注册表中。奇怪...

请解释一下这是怎么回事?我怎样才能找到实现该对象的DLL。

2 个答案:

答案 0 :(得分:1)

这怎么可能?简单:DLL从未注册过。

当然,这意味着您无法从注册表中找到DLL,但您可能知道您需要哪个DLL的其他原因。例如。因为你自己编写了DLL!

在这种情况下,Microsoft很有可能了解Microsoft终端服务DLL。此外,他们将知道何时更改CLSID。你也不知道,所以不要在这里做出假设。

答案 1 :(得分:0)

尽管已经回答了这个问题,但我还是要花2美分。它可能,甚至可能是使用免注册COM。在这种情况下,类型库信息存储在清单中。

如果您知道要查找的进程,则可以使用procexp检查加载到进程中的DLL。获得DLL列表后,您可以检查可疑或可能的候选者的清单,以尝试查找ProgIds和CLSID。