1

我正在运行 ac# 应用程序,并且正在使用 DSOFile dll。该 DLL 在项目中被引用。我可以在我的开发机器上运行 exe。但是当我在另一台机器上运行 exe 时,我得到了

未处理的异常:System.Runtime.InteropServices.COMException:检索具有 CLSID {58968145-CF05-4341-995F-2EE093F6ABA3} 的组件的 COM 类工厂失败,原因是以下错误:80040154 未注册类(来自 HRESULT 的异常:0x80040154(REGDB_E_CLASSNOTREG) ))。

不知道为什么我会得到这个。谷歌搜索并将平台目标设置为 x86 但我仍然遇到这个问题。任何帮助都会很棒。

4

1 回答 1

1

这是我们在问题下方进行的对话的摘要。


80040154 类未注册(HRESULT 异常:0x80040154 (REGDB_E_CLASSNOTREG))。

这意味着您尝试实例化的 COM 对象是一个未注册 COM 的类。COM 使用注册表来维护类注册。

尝试在目标系统上使用具有管理员权限的命令行执行regsvr32.exe DSOFile.dll

我不记得在我的开发机器上做过这个。这让我想知道我还缺少什么

是的,请尝试以下检查:

快速检查

我建议使用 Microsoft 的免费工具OleView(通常与 Visual Studio 一起安装)来检查所有 COM,但如果您没有它,请打开 RegEdit 并查看是否存在以下密钥:

HKCR\CLSID\{58968145-CF05-4341-995F-2EE093F6ABA3}

如果目标机器上不存在,则 DSOFile 未注册。

如果它在那里,展开上面的键,你应该会看到一个名为InprocServer32的子键。此键的(默认)值将是 DLL 的路径,在本例中为 DSOFile.dll。

更多的

如果您想使用 OleView,请查看:

C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin\

实际位置可能因我怀疑安装的 Visual Studio 或 Windows SDK 的版本而异。

运行后,在自动化对象中查找您的类。

在此处输入图像描述

如果做不到这一点,请查看All Objects

在此处输入图像描述

于 2016-02-09T05:40:27.420 回答