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 。
如果做不到这一点,请查看所有对象 。