我有一个在我的系统上注册的COM组件,并在我的C#程序中添加了一个引用。当我想使用COM组件时,我在这行代码上收到异常:
ComServerUsedByDotNet.Class1 foo = new ComServerUsedByDotNet.Class1() ;
这是我收到的错误:
System.Runtime.InteropServices.COMException未处理Message =使用CLSID检索组件的COM类工厂 {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组件?
答案 0 :(得分:1)
我注册了COM组件。我发现我需要的是为32位平台构建程序(Project - > Properties - > Build - > Platform Target:x64)。 COM组件可能是为32位平台构建的,使用它的.NET应用程序也应该为32位平台构建。
答案 1 :(得分:0)
正如David Brabant所说,检查注册表中的CLSID以确认COM Server DLL已正确注册。
如果没有,则在.NET可以访问之前,您需要使用regsvr32.exe向Windows注册COM服务器。
有关regsvr32的更多信息:How to use the Regsvr32 tool and troubleshoot Regsvr32 error messages