System.Runtime.InteropServices.COMException:检索具有CLSID {58968145-CF05-4341-995F-2EE093F6ABA3}的组件的COM类工厂失败

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

未处理的exception:System.Runtime.InteropServices.COMException:由于以下错误,检索具有CLSID {58968145-CF05-4341-995F-2EE093F6ABA3}的组件的COM类工厂失败:80040154未注册类(HRESULTexception:0x80040154(REGDB_E_CLASSNOTREG) ))。

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


这是我们在问题下发生的对话的摘要。


80040154未注册类(HRESULTexception: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的版本而异。

运行后,查看您的类的Automation Objects

在此处输入图像描述

如果做不到这一点,请查看所有对象

在此处输入图像描述