gpt4 book ai didi

visual-studio-2008 - 检索 COM 类工厂失败。错误 : 80040154

转载 作者:行者123 更新时间:2023-12-01 11:57:52 54 4
gpt4 key购买 nike

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

异常详情:

System.Runtime.InteropServices.COMException: Retrieving the COM class factory for component with CLSID {AD37B7D5-B5A3-460A-8FFB-3C71984A4537} failed due to the following error: 80040154.

我在我的 ASP.NET Web 应用程序中使用了一个 COM DLL。我已经成功地让它在我自己的开发机器和构建机器上运行。
但是,当我尝试将项目部署到另一台机器 (Microsoft Windows Server 2003 R2) 时,出现上述错误。

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

我正在使用 ASP.NET 3.5 版在 Visual Studio 2008 中开发项目,并构建我的项目以在任何 CPU 上运行,每台机器都使用 64 位 Windows。我正在使用 IIS 6.0 版。
(我试过启用IIS运行32位应用程序,这导致web应用程序不可用。)

我写了一个 Windows 脚本文件来检查 COM DLL 是否工作(即独立于项目)。这个脚本在我的构建机器和我自己的开发机器上都运行良好。
但是它在我遇到问题的机器上无法正常运行(Microsoft Windows Server 2003 R2)。我必须做的是使用以下命令(我发现 here)从命令行运行脚本:

C:\WINDOWS\SysWOW64\wscript.exe COMtest.js  

以这种方式运行时,wscript 文件可以成功运行。
我认为它与构建 COM DLL 的版本有关。

我是否需要在我的 Visual Studio 项目中启用某些设置?
(请注意,我没有自己构建 COM DLL。其他人已经构建并提供给了我。)

最佳答案

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

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

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

关于visual-studio-2008 - 检索 COM 类工厂失败。错误 : 80040154,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5179280/

54 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com