来自HRESULT的例外情况:0x8002801D(TYPE_E_LIBNOTREGISTERED)

时间:2015-02-02 15:09:24

标签: c# outlook

从Office 2007安装MS Outlook时,我安装了安装了MS Office 2010的PC。 在这台电脑上,代码如下:

Microsoft.Office.Interop.Outlook.Application myOutlook = new Microsoft.Office.Interop.Outlook.Application();
string theName = myOutlook.Name;

导致以下异常:

  

无法转换类型的COM对象   'Microsoft.Office.Interop.Outlook.ApplicationClass'到接口类型   'Microsoft.Office.Interop.Outlook._Application'。此操作失败   因为QueryInterface调用COM组件的接口   由于IID'{00063001-0000-0000-C000-000000000046}'失败了   以下错误:库未注册。 (HRESULT的例外情况:   0x8002801D(TYPE_E_LIBNOTREGISTERED))。

我删除了以下注册表项,上面的代码正常运行。运行Windows更新后,将再次插入以下条目,上面的代码再次引发异常。 HKEY_CLASSES_ROOT \类型库{00062FFF-0000-0000-C000-000000000046} \ 9.4

1)由于权限

,无法从应用程序中删除注册表项

2)需要两个办公室版本

3)行“string theName = myOutlook.Name;”可以被任何引用变量myOutlook的行替换为具有完全相同的结果

4)相同的代码在安装了MS Office 2007的PC上完美运行,包括MS Outlook。

任何建议都将不胜感激。

1 个答案:

答案 0 :(得分:0)

您可以使用后期绑定技术,这有助于避免此类异常。有关详细信息,请参阅Type.InvokeMember方法。

您是否在PC上安装了Office 2010的Click2Run版本?