将工作的 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/