【发布时间】:2012-02-07 17:38:22
【问题描述】:
运行 C# Windows 窗体应用程序时出现此错误:
Retrieving the COM class factory for component with CLSID {} failed
due to the following error: 80040154 Class not registered (Exception
from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).
这出现在 32 位 Windows XP 的 IDE 中。有问题的 COM 组件是一个第 3 方 dll,它肯定在有问题的机器上注册好。我的项目是针对 x86 好的。我似乎只在实例化组件的特定类时收到错误,我使用的其他类工作正常。
我已经尝试使用刚刚作为参考直接添加的组件,并且还创建了一个互操作程序集并引用了它,但得到了相同的结果。使用 regsvr32 取消注册和重新注册组件无济于事。
如果我在 VB6 应用程序中引用相同的组件并实例化相同的类,它就可以正常工作!我很困惑,任何人都可以提供任何可以帮助我的建议吗?!
谢谢。
【问题讨论】:
-
好吧,你排除了明显的原因。剩下的是 DLL Hell,你使用的类型库可能与实际安装的组件不匹配。您可以通过运行 SysInternals 的 ProcMon 实用程序获得更多洞察力。您将看到您的程序在注册表中搜索 CLSID 键。您可以使用 OleView.exe 程序直接查看类型库。文件 + 查看类型库。您通常需要组件供应商的帮助来解决这个问题。