.net - 如何修复 COMException 错误 80040154?

标签 .net exception com dllregistration

将工作的 C# 项目从 64 位 Windows 7 计算机移动到 32 位 XP 计算机导致以下错误:

Retrieving the COM class factory for component with CLSID {681EF637-F129-4AE9-94BB-618937E3F6B6} failed due to the following error: 80040154.

681EF637-F129-4AE9-94BB-618937E3F6B6 不在注册表中,因此未正确安装,但这与之前在 64 位 Windows 7 计算机上出现的问题相同。

找到了64位Windows 7机器上此错误的解决方案here (将 Platform Target 更改为 x86)但这并不能解决 32 位 XP 机器上的问题。

如何找到与 681EF637-F129-4AE9-94BB-618937E3F6B6 关联的 DLL,或者更好的是,如何修复此异常?

最佳答案

要查找 DLL,请转到 64 位计算机并打开注册表。找到名为 HKEY_CLASSES_ROOT\CLSID\{681EF637-F129-4AE9-94BB-618937E3F6B6}\InprocServer32 的键。该键将 DLL 的文件名作为其默认值。

如果您通过重新编译 x86 项目解决了 64 位计算机上的问题,那么您需要查看注册表的 32 位部分,而不是正常位置。这是HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Classes\CLSID\{681EF637-F129-4AE9-94BB-618937E3F6B6}\InprocServer32

如果 DLL 是为 32 位构建的,那么您可以直接在 32 位计算机上使用它。如果它是为 64 位构建的,那么您必须联系供应商并从他们那里获取 32 位版本。

获得 DLL 后,通过运行 c:\windows\system32\regsvr32.exe 来注册它。

关于.net - 如何修复 COMException 错误 80040154?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7197506/

相关文章:

c# - 在 OData 中提供 DateTime 值

datetime - 在 C# 中处理 TimeSpan 异常

c++ - 从 C++ 异常的构造函数中抛出异常

c# - 以编程方式设置 Excel 图表标题

visual-c++ - Visual Studio : Automatic COM registration with dependant DLLs outside Debug/Release dirs

.net - 域驱动的设计:微服务(CQRS + ES),客户端可见性和元数据

c# - 在 C# 中动态加载和使用 DLL

c# - 未处理 Windows 服务异常

.net - AxInterop和Interop有什么区别?

c# - Math.Pow(等等)是如何工作的