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

C# System.Runtime.InteropServices.COMException(0x80040154):,c#,exception,C#,Exception,我在c项目中遇到了一个例外: System.Runtime.InteropServices.COMException 0x80040154:检索CLSID为{877AA945-1CB2-411C-ACD7-C70B1F9E2E32}的组件的COM类工厂失败,原因是出现以下错误:80040154 这意味着什么?这意味着类id 877AA945-1CB2-411C-ACD7-C70B1F9E2E32不在注册表中 您可以通过打开regedit.exe,浏览HKEY_CLASSES_ROOT\CLSID

我在c项目中遇到了一个例外:

System.Runtime.InteropServices.COMException 0x80040154:检索CLSID为{877AA945-1CB2-411C-ACD7-C70B1F9E2E32}的组件的COM类工厂失败,原因是出现以下错误:80040154


这意味着什么?

这意味着类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实现了该对象,您可以为托管dll运行regsvr32.exe或regasm.exe。

我正在Selenium中运行一些自动测试,并且遇到了相同的问题。通过在测试设置中将默认处理器体系结构切换到x86,问题得以解决。

在我的例子中,类已正确注册

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


<>设置允许32位应用程序错误修复问题。

< P>我在64位OS上从Win窗体C项目中运行C++ COM DLL。我将Win Forms C项目更改为x86,重新运行,它成功了。为此:-

右键单击.NET项目,然后选择“属性” 选择Build选项卡 将平台目标设置为x86 重新编译,然后重新运行
改变bitness的概念,从谷歌点击量只有43800次,这是最近的问题。我投票关闭这个问题作为离题,因为没有研究。谢谢,知道这是一个注册表项寻找真的帮助我找到了dll!我是windows编程新手,所以不知道该去哪里找:这个答案帮助我解决了一个类似的问题。我帮助解决了我的问题。我遇到了同样的问题,并检查了HKEY_CLASSES_ROOT\CLSID\{9DFF2B08-C9EC-11D4-9191-0010A4E6EB31}但是这个密钥不在那里,所以我现在应该怎么做?我正在尝试使用regsvr32注册它,但出现错误模块已加载,但未找到入口点DllRegisterServer。请确保该文件是有效的DLL或OCX文件,然后重试。