检索COM类工厂失败;班级未注册

时间:2016-04-07 14:16:03

标签: c# .net

这似乎是关于SO的热门话题,但我见过的解决方案都没有为我工作。

我的Web应用程序使用PolarZIP来处理压缩和解压缩最终用户提供/接收的XML文件。在我的项目中没有引用PolarZIP.dll,也没有在类中使用任何使用语句,但在我们的实时服务器上,应用程序行为正常。在本地,一旦它试图实例化这个PolarZIP对象,我就会得到这个例外:

  

检索具有CLSID {9A00B901-D104-11D4-B8F7-080030001D26}的组件的COM类工厂由于以下错误而失败:80040154未注册类(HRESULT异常:0x80040154(REGDB_E_CLASSNOTREG))。

这是我能找到的最受欢迎的主题:

Retrieving the COM class factory for component with CLSID {XXXX} failed due to the following error: 80040154

但是在解决方案中设置我为x86构建的所有项目(而不是“任何CPU”)会让事情变得更糟 - 当我启动应用程序时,我得到了这个新的服务器错误:

  

无法加载文件或程序集“OurSoftware.Business”或其依赖项之一。试图加载格式不正确的程序。

引用此错误的大多数其他问题要么被标记为我上面链接的那个重复,要么根本没有任何答案 我的C:\Windows\SysWOW64\文件夹中有PolarZIP.ocx,它位于实时服务器上(软件正常运行)。

有什么想法吗?

编辑;如果重要的话,CLSID 9A00B901-D104-11D4-B8F7-080030001D26 显示在注册表中。名称:(默认),类型:REG_SZ,数据:PolarZIP控件

2 个答案:

答案 0 :(得分:0)

复制文件是不够的 - 您需要注册库。这通常由安装程序处理 - 复制文件通常是一个坏主意。如果您没有使用安装程序的选项,请查看regsvr32.exe。很可能需要处理其他步骤,需要安装的依赖项 - 实际上,使用安装程序是目前最喜欢的选项:)

此外,确保位数正确。 32位应用程序无法访问64位COMponent,反之亦然。

答案 1 :(得分:-1)

您是否使用'Depends.exe'检查了任何依赖库?