首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >检索COM类工厂失败。错误: 80040154

检索COM类工厂失败。错误: 80040154
EN

Stack Overflow用户
提问于 2011-03-03 10:12:31
回答 3查看 9.4K关注 0票数 3

使用CLSID检索组件的COM类工厂(AD37B7D5-B5A3-460A-8FFB-3C71984A4537}失败,原因如下: 80040154。

例外细节:

System.Runtime.InteropServices.COMException:使用CLSID检索组件的COM类工厂(AD37B7D5-B5A3-460A-8FFB-3C71984A4537}失败,原因如下: 80040154。

我在我的ASP.NET网络应用程序中使用了一个COM。我已经成功地让它在我自己的开发机器和构建机器上运行。

但是,当我尝试将项目部署到另一台计算机( 2003 R2)时,会出现上述错误。

我已经使用regsvr32命令注册了COM。它说DLL已成功注册。

我正在用ASP.NET版本3.5在Visual 2008中开发这个项目,并将我的项目构建为在任何CPU上运行,每台机器都使用64位的Windows。我正在使用IIS版本6.0。

(我已经尝试让IIS运行32位应用程序,这导致web应用程序不可用。)

我编写了一个Windows脚本文件来检查COM DLL是否在工作(即独立于项目)。这个脚本在我的构建机器和我自己的开发机器上都运行得很好。

但是,它没有在我遇到问题的机器上正常运行( 2003 R2)。我要做的是使用以下命令(我找到了这里)从命令行运行脚本:

代码语言:javascript
运行
复制
C:\WINDOWS\SysWOW64\wscript.exe COMtest.js  

当以这种方式运行时,wscript文件会成功地工作。

我猜想这与COM DLL的版本有关。

是否需要在Visual项目中启用某些设置?

(请注意,我自己还没有构建COM DLL。是别人造的,把它给了我。)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-03-07 14:46:22

我通过为dll创建一个COM+应用程序来解决这个问题。

票数 1
EN

Stack Overflow用户

发布于 2011-03-03 13:08:32

这是COM的FileNotFound错误。在这种情况下,它很可能是一个比特问题。注册表将32位服务器和64位服务器的COM注册分开。当您从wscript.exe目录运行syswow64时,它强烈地表明了这一点,这是32位可执行文件的主目录。64位进程将无法在注册表中找到32位服务器。它也不能使用它。通过运行c:\windows\system32\wscript.exe来复制它

您首先必须构建COM服务器的x64版本,以便64位进程可以使用它。然后,您必须将其注册到Regsvr32.exe的64位版本,即c:\windows\system32 32中的版本,而不是syswow64。如果仍然有问题,请使用SysInterals的ProcMon实用程序来查找进程在注册表和文件系统中的位置。

或者让IIS以32位模式运行.这是另一个需要不同标签的问题。

票数 4
EN

Stack Overflow用户

发布于 2013-06-27 18:12:35

当使用第三方.dll文件时,我收到了80040154错误。最后,我发现这个错误是由于尝试API禁止的调用的结果-- Visual使我认为它们会很好。因此,一个答案可能是检查您的API调用是否正确使用dll文档,即RTFM!

我想补充一下,因为这样可以节省一些宝贵的时间。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5179280

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档