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

C# System.Runtime.InteropServices.COMException:检索CLSID为{58968145-CF05-4341-995F-2EE093F6ABA3}的组件的COM类工厂失败,c#,interop,console-application,dsofile,C#,Interop,Console Application,Dsofile,我正在运行一个c#应用程序,我正在使用DSOFile dll。此DLL在项目中被引用。我能够在我的开发机器上运行exe。 但当我在另一台机器上运行exe时,我会 未处理的异常:System.Runtime.InteropServices.COMException:检索CLSID为{58968145-CF05-4341-995F-2EE093F6ABA3}的组件的COM类工厂失败,原因是以下错误:80040154类未注册(来自HRESULT的异常:0x80040154(REGDB_E_CLASSN

我正在运行一个c#应用程序,我正在使用DSOFile dll。此DLL在项目中被引用。我能够在我的开发机器上运行exe。 但当我在另一台机器上运行exe时,我会

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

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


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


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

如果有,展开上面的键,您应该会在ProcServer32中看到名为的子键。此键的(默认)值将是DLL的路径,在本例中为DSOFile.DLL

更多 如果要使用OleView,请查看:

C:\ProgramFiles(x86)\Microsoft SDK\Windows\v7.0A\bin\

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

运行后,查看类的自动化对象

否则,请查看所有对象


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


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

如果有,展开上面的键,您应该会在ProcServer32中看到名为的子键。此键的(默认)值将是DLL的路径,在本例中为DSOFile.DLL

更多 如果要使用OleView,请查看:

C:\ProgramFiles(x86)\Microsoft SDK\Windows\v7.0A\bin\

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

运行后,查看类的自动化对象

否则,请查看所有对象


我猜COM库没有在另一台计算机上注册。尝试在目标系统上使用管理员权限从命令行执行
regsvr32.exe DSOFile.dll
,非常感谢。在这种情况下,我需要在运行exe的每台机器上注册这个COM库吗?谢谢MickyD。我不记得在我的开发机器上做过这个。这让我想知道我还遗漏了什么吗?“‘ol’”“它在我的机器参数上工作”;)如果不知道DSOFile库的功能,很可能它是在您不知情的情况下在您的邮箱中注册的。也许是一些安装程序?无论如何,看看我下面的建议。我猜COM库没有在另一台计算机上注册。尝试在目标系统上使用管理员权限从命令行执行
regsvr32.exe DSOFile.dll
,非常感谢。在这种情况下,我需要在运行exe的每台机器上注册这个COM库吗?谢谢MickyD。我不记得在我的开发机器上做过这个。这让我想知道我还遗漏了什么吗?“‘ol’”“它在我的机器参数上工作”;)如果不知道DSOFile库的功能,很可能它是在您不知情的情况下在您的邮箱中注册的。也许是一些安装程序?不管怎样,看看下面我的建议。非常感谢米奇。我会听从你的指示。非常感谢,米奇。我会听从你的指示。非常感谢。