当我尝试创建COM类的实例时,它会抛出异常
类未注册(HRESULT异常:0x80040154(REGDB_E_CLASSNOTREG))
请建议我怎么解决?
Jay*_*ggs 41
看起来您尝试初始化的任何程序或进程都没有安装在您的计算机上,安装已损坏或需要注册.
安装它,修复它(通过添加/删除程序)或注册它(通过Regsvr32.exe).
您没有提供足够的信息来帮助我们.
小智 13
我的问题和解决方案
我有一个32位的第三方dll,我在2008 R2机器上安装了64位.
我有一个在.net 4.5框架中创建的wcf服务,它调用32位第三方dll进程.现在我已将构建属性设置为目标"任何"cpu并将其部署到64位计算机.
当我试图调用wcf服务得到错误"80040154类没有注册(HRESULT异常:0x80040154(REGDB_E_CLASSNOTREG")
现在,我使用ProcMon.exe来跟踪com注册表问题,并确定该进程正在HKLM\CLSID和HKCR\CLSID中查找没有条目的注册表项.
了解到Microsoft不会将32位com组件注册到64位计算机中的路径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"计算机而不是"任何"来实现.
将"X86"版本部署到2008 R2服务器后出现问题"System.BadImageFormatException:无法加载文件或程序集"
这个badimageformatexception的解决方案是在右侧apppool的IIS Apppool属性中将"Enable32bitApplications"设置为"True".
And*_*ith 10
另请注意,初始化时的类上下文可以创建该异常.如果您有一个编码为INPROC_SERVER的对象,但您尝试将CoCreateInstance设置为CLSCTX_LOCAL_SERVER,那么您也会收到该错误.
您需要确保对象已注册,CoCreateInstance正在创建具有正确类上下文的实例.
就我而言
my platform是 x64
the Dll library(sdk)是redistributable packagex64
所以
在解决方案资源管理器中navigate to your project
打开Properties
change the Platform target from AnyCPU to x64
| 归档时间: |
|
| 查看次数: |
247539 次 |
| 最近记录: |