首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何解决COM异常类未注册(Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))?

如何解决COM异常类未注册(Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))?
EN

Stack Overflow用户
提问于 2009-09-30 13:12:42
回答 20查看 318.5K关注 0票数 102

当我尝试创建COM类的实例时,它抛出一个异常,如

未注册类(来自HRESULT的异常: 0x80040154 (REGDB_E_CLASSNOTREG))

请建议我如何解决这个问题?

EN

回答 20

Stack Overflow用户

回答已采纳

发布于 2009-09-30 05:21:53

您尝试初始化的程序或进程看起来要么没有安装在您的计算机上,要么安装已损坏,要么需要注册。

安装它,修复它(通过添加/删除程序)或注册它(通过Regsvr32.exe)。

你没有为我们提供足够的信息来帮助你。

票数 49
EN

Stack Overflow用户

发布于 2012-02-28 21:39:48

您需要确保您的所有程序集都针对正确的体系结构进行了编译。如果重新安装COM组件无效,请尝试更改x86的体系结构。

票数 67
EN

Stack Overflow用户

发布于 2015-09-08 22:47:18

我的问题和解决方案

我有一个32位的第三方动态链接库,我已经安装在2008年的R2机器,这是64位。

我有一个在.net 4.5框架中创建的wcf服务,它调用32位第三方动态链接库进行处理。现在,我已经将build属性设置为以'any‘cpu为目标,并将其部署到64位机器上。

当我试图调用wcf服务得到错误"80040154类未注册(异常从HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG“

现在,我使用ProcMon.exe跟踪com注册表问题,并确定该进程正在HKLM\CLSID和HKCR\CLSID中查找没有注册表项的注册表项。

了解到Microsoft不会在64位计算机中将32位com组件注册到路径HKLM\CLSID、HKCR\CLSID,而是将条目放在HKLM\Wow6432Node\CLSID和HKCR\Wow6432Node\CLSID路径中。

现在的冲突是64位进程试图调用64位计算机中的32位进程,该进程将在HKLM\CLSID、HKCR\CLSID中查找注册表项。解决方案是我们必须强制64位进程查看HKLM\Wow6432Node\CLSID和HKCR\Wow6432Node\CLSID的注册表项。

这可以通过将wcf服务项目属性配置为指向“X86”计算机而不是“Any”计算机来实现。

在将'X86‘版本部署到2008 R2服务器后,出现问题"System.BadImageFormatException:无法加载文件或程序集“

此badimageformatexception异常的解决方案是在IIS apppool属性中为正确的应用程序池将'Enable32bitApplications‘设置为'True’。

票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1496214

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档