当我尝试创建COM类的实例时,它抛出一个异常,如
未注册类(来自HRESULT的异常: 0x80040154 (REGDB_E_CLASSNOTREG))
请建议我如何解决这个问题?
发布于 2009-09-30 05:21:53
您尝试初始化的程序或进程看起来要么没有安装在您的计算机上,要么安装已损坏,要么需要注册。
安装它,修复它(通过添加/删除程序)或注册它(通过Regsvr32.exe)。
你没有为我们提供足够的信息来帮助你。
发布于 2012-02-28 21:39:48
您需要确保您的所有程序集都针对正确的体系结构进行了编译。如果重新安装COM组件无效,请尝试更改x86的体系结构。
发布于 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’。
https://stackoverflow.com/questions/1496214
复制相似问题