HRESULT:0x80040154 用于注册的 COM 对象

Posted

技术标签:

【中文标题】HRESULT:0x80040154 用于注册的 COM 对象【英文标题】:HRESULT:0x80040154 for registered COM object 【发布时间】:2013-05-17 01:14:22 【问题描述】:

我在调用 COM 对象时遇到了一些问题。

szProgID = Imctrl.Section
HRESULT hr = CLSIDFromProgID(szProgID, &clsid);

执行后,hr = S_OK, clsid = "CLSID_Section Class"。 但是当我尝试创建一个对象时,CoCreateInstance 返回错误:“类未注册”。虽然注册表中存在“Imctrl.Section”。

hr = ::CoCreateInstance(clsid, pUnkOuter, dwClsContext, __uuidof(T), (void**)&p);

此 dll 中的其他类也出现同样的错误。

【问题讨论】:

可能是 32 位与 64 位的问题? COM 服务器和 COM 客户端必须使用相同的位数(一般) Imctrl.Section 在注册表中只映射到 CLSID,然后 CLSID 映射到实际的服务器实现,然后它必须存在。总而言之,这要么是您尝试实例化错误事物的问题,要么服务器不只是注册/可用(包括 32/64 可能的原因)。 【参考方案1】:

该问题与 32 位与 64 位无关。 使用实用软件“depends.exe”我发现这个DLL依赖于一些第三方DLL,它不允许访问该对象。

【讨论】:

以上是关于HRESULT:0x80040154 用于注册的 COM 对象的主要内容,如果未能解决你的问题,请参考以下文章

没有注册类 (异常来自 HRESULT:0x80040154 (REGDB_E_CLASSNOTREG))

没有注册类 (异常来自 HRESULT:0x80040154 (REGDB_E_CLASSNOTREG))

win10系统,vs调用COM_IDL_Connect出错

关于.net 对.manifest清单文件查找缓存的猜想

win7 64位系统,有关C#和arcengine二次开发的没有注册类和license方面的问题!

Wincc与ABB机器人本体进行OPC通讯问题,已经实现了WINCC与ABB机器人的IPS通讯!