我在我的系统上注册了一个COM组件,并在我的C#程序中添加了一个引用。当我想使用COM组件时,我会在这一行代码上收到异常:
ComServerUsedByDotNet.Class1 foo = new ComServerUsedByDotNet.Class1() ;这是我收到的错误:
System.Runtime.InteropServices.COMException未被处理,Message=Retrieving是组件的COM类工厂,其CLSID {61D54BA2-B9A2-4708-91E5-74C83A025063}由于以下错误而失败: 80040154。Source=EarlyBoundDotNetClientCS 错误代码=-2147221164
因此,我收到的错误代码是-2147221164,根据http://blogs.msdn.com/b/eldar/archive/2007/04/03/a-lot-of-hresult-codes.aspx,-2147221164代表REGDB_E_CLASSNOTREG。这是否意味着我的组件没有注册?我确信我确实使用Windows上的Run实用程序注册了它。如果问题是我没有注册COM组件,如何检查哪些COM组件已在我的系统中注册?
发布于 2014-09-12 10:11:07
我确实注册了COM组件。我发现我需要为32位平台构建程序(Project -> Properties -> build -> platform Target: x64)。COM组件可能是为32位平台构建的,使用COM组件的.NET应用程序也应该为32位平台构建。
发布于 2014-09-12 07:58:14
正如David所说,请检查注册表中的CLSID,以确认COM Server DLL已正确注册。
如果不是,则需要使用regsvr32.exe在.NET访问COM服务器之前将其注册到Windows。
关于regsvr32:如何使用Regsvr32工具并对Regsvr32错误消息进行故障排除的更多信息
https://stackoverflow.com/questions/25803341
复制相似问题