.NET RTD /一个用户机器上的COM互操作Excel的错误?(.NET RTD/COM Exc

2019-09-16 14:35发布

我们建立了一个.NET COM / Excel的RTD服务器(.NET程序集),它已经使用了很多年,对各种机器(即我们知道它的工作原理,以及我们对安装它的工作原理标法)。 我们谁安装在不同的机器上这RTD分量用户,并有得到它的顺利运作的问题。 我认为这个问题涉及Interop.Microsoft.Office.Interop.Excel.dll某种程度上是要么与本机不兼容,否则注册不当。 下面是具体的细节:

虽然RTD链接工作在一定程度上,我们可以看到这个错误经常被我们的应用程序记录:

RTDServer.NotifyExcel(): Error notifying Excel, ex=System.InvalidCastException: 
Unable to cast COM object of type 'System.__ComObject' to interface type 
'Microsoft.Office.Interop.Excel.IRTDUpdateEvent'. This operation failed because 
the QueryInterface call on the COM component for the interface with 
IID '{A43788C1-D91B-11D3-8F39-00C04F3651B8}' failed due to the following error: 
Library not registered. (Exception from HRESULT: 0x8002801D (TYPE_E_LIBNOTREGISTERED)).     
 at Microsoft.Office.Interop.Excel.IRTDUpdateEvent.UpdateNotify()     
 at EZomsRTDServer.RTDServer.NotifyExcel()

当我在用户的计算机上排除故障,我检查,看看是否我们的组件在COM正确注册。 我们运行这个命令与COM注册我们的组件:

C:\EZomsRTD\regasm EZomsRTDServer.dll /codebase "c:\EZomsRTD\EZomsRTDServer.dll"
C:\EZomsRTD\regasm EZomsRTDServer.dll /tlb

用户的计算机上运行这些命令产生这个错误regasm:

Type library exporter warning: Referenced type is defined 
in managed component, which is imported from a type library 
that could not be loaded because it was not registered 
(type: 'Microsoft.Office.Interop.Excel.IRtdServer'; component: 
'C:\EZomsRTD\Interop.Microsoft.Office.Interop.Excel.dll').  
Assembly exported to 'C:\EZomsRTD\EZomsRTDServer.tlb', and the type 
library was registered successfully

(文件:Interop.Microsoft.Office.Interop.Excel.dll是在同一文件夹作为我们的组件。)

难道这可能是由存在于被这款机器的GAC注册的Interop.Excel组件的另一个版本引起的? 任何其他可能的研究领域?

注:用户有Windows XP和Excel 2003中(相同的轮廓。他以前的机器,其工作。)

在此先感谢您的帮助。

Answer 1:

IID为“接口{A43788C1-D91B-11D3-8F39-00C04F3651B8}

这就是IRTDUpdateEvent接口。 它确实有HKCU \接口声明的标准编组的条目。 这需要一个类型库的LIBID是{00020813-0000-0000-C000-000000000046}。

什么错误信息,告诉你的是,这台机器上的注册表缺少注册表项HKCR\TypeLib\{00020813-0000-0000-C000-000000000046}或其子项之一。 这可能是因为它有一个旧版本安装的Office,但是这将是显而易见的。 只是简单的注册表损坏是此类事故的主要原因。 这是最好的吸住机,并将它停止浪费大家的时间。 重新安装Office如果这是不切实际的某些原因。 试图修复注册表项应该是你最后的选择,这种破坏是很少孤立。



文章来源: .NET RTD/COM Excel Interop errors on one user's machine?
标签: c# .net excel com rtd