System.Runtime.InteropServices.COMException(0x80040154):

时间:2011-01-11 23:50:16

标签: c# exception

我在c#项目中遇到异常:

  

System.Runtime.InteropServices.COMException(0x80040154):由于以下错误,检索具有CLSID {877AA945-1CB2-411C-ACD7-C70B1F9E2E32}的组件的COM类工厂失败:80040154。

这意味着什么?

4 个答案:

答案 0 :(得分:30)

这意味着类ID 877AA945-1CB2-411C-ACD7-C70B1F9E2E32不在注册表中。

您可以通过打开regedit.exe,浏览到HKEY_CLASSES_ROOT\CLSID\{877AA945-1CB2-411C-ACD7-C70B1F9E2E32}来验证这一点。如果您在64位操作系统上运行32位应用程序,请查找HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{877AA945-1CB2-411C-ACD7-C70B1F9E2E32}

如果它存在,可能是其他一些问题,但可能会丢失。要解决此问题,您通常会运行分发此COM对象的安装程序。如果您没有,并且您知道dll实现了该对象,则可以运行regsvr32.exe(或用于托管dll的regasm.exe)。

答案 1 :(得分:2)

我在64位操作系统上运行来自Win Forms C#项目的C ++ COM DLL。我将Win Forms C#项目更改为x86,重新运行,并且运行正常。为此: -

  1. 右键单击.NET项目,然后选择属性
  2. 选择构建标签
  3. 平台目标设置为x86
  4. 重新编译并重新运行
  5. George J's answer

    改变位数的概念

答案 2 :(得分:1)

我在Selenium运行一些自动化测试并遇到同样的问题。问题是通过切换"默认处理器架构"到测试设置中的x86。

答案 3 :(得分:0)

在我的情况下,班级已正确注册。

但是,使用该类的应用程序的 IIS应用程序池启用32位应用程序属性设置为 True 。它没有找到它,因为应用程序是在任何CPU / 64位模式下构建的。

启用32位应用程序设置为错误修复了此问题。

相关问题