如何找到哪个未注册的 DLL 正在实现 COM 对象?

Posted

技术标签:

【中文标题】如何找到哪个未注册的 DLL 正在实现 COM 对象?【英文标题】:How do I find which unregistered DLL is implementing the COM object? 【发布时间】:2021-10-26 05:47:12 【问题描述】:

我有一个与 MATLAB 互操作的 C# 应用程序。当我在目标系统上部署我的应用程序并从我的 C# 应用程序调用 MATLAB(用于执行其功能)时,我收到此错误:

我想帮忙找出可能未注册的DLL文件然后注册。

【问题讨论】:

在您的系统上查找该 CLSID 或 google 查找 ID。它似乎是matlab应用程序。这可能是 x64 与 x86 的问题***.com/questions/17985653/class-not-registered-error 【参考方案1】:

在应用程序正常运行的(开发)机器上,您可以在注册表中找到此 CLSID (HKEY_CLASSES_ROOT\CLSID\ you guid...) 并查看 InprocServer32 项下使用的 DLL。 要查看/编辑注册表,请使用 regedit。

【讨论】:

恕我直言,您应该提到有 2 个类注册表:32 位和 64 位(Wow6432Node 等)。一个应该搜索两者。 Pavel Aristarkhov 感谢我能够在您提到的注册表中找到 CLSID。但是我在哪里可以看到 InprocServer32 键以查看使用了哪个 DLL?另外,一旦我找到它,我如何在目标机器上注册它? 也可以是LocalServer32键。例如:pasteboard.co/KhEJl1k.png 第二个问题。根据 DLL 类型(.NET、raw 等),它可以通过 regasm .NET 实用程序注册或通过其他方式(通过自己的安装程序)安装在机器上。有很多选择... 您是否在 C# 项目中引用了一些 ActiveX(或类似)?然后,您必须将其与您的应用程序一起部署。

以上是关于如何找到哪个未注册的 DLL 正在实现 COM 对象?的主要内容,如果未能解决你的问题,请参考以下文章

通过注册的 TLB 从 python 访问未注册的 COM 对象

如果 com dll 未注册,如何防止崩溃

libxml2.dll win10文件在哪

需要在注册表中找到已注册 com dll 的 clsid

模块“srmlib.dll”已加载,但未找到入口点 DllRegisterServer

模块“.dll”已加载,但未找到入口点