接口的 COM 组件调用 QueryInterface 因以下错误而失败: 库没有注册。

Posted xbqn-ss

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了接口的 COM 组件调用 QueryInterface 因以下错误而失败: 库没有注册。相关的知识,希望对你有一定的参考价值。

这个问题原因是因为安装了高版本的office然后卸载掉,又安装了低版本的office导致的。

博主是 office2016卸载后,安装了office2013.

EXCEL报错信息为:

无法将类型为“Microsoft.Office.Interop.Excel.ApplicationClass”的 COM 对象强制转换为接口类型“Microsoft.Office.Interop.Excel._Application”。
此操作失败的原因是对 IID 为“{000208D5-0000-0000-C000-000000000046}”的接口的 COM 组件调用 QueryInterface 因以下错误而失败: 库没有注册。 (异常来自 HRESULT:0x8002801D (TYPE_E_LIBNOTREGISTERED))。

word的报错信息为:

无法将类型为“Microsoft.Office.Interop.Word.ApplicationClass”的 COM 对象强制转换为接口类型“Microsoft.Office.Interop.Word._Application”。
此操作失败的原因是对 IID 为“{00020970-0000-0000-C000-000000000046}”的接口的 COM 组件调用 QueryInterface 因以下错误而失败: 库没有注册。 (异常来自 HRESULT:0x8002801D (TYPE_E_LIBNOTREGISTERED))。

解决问题需要对注册表做如下操作:

EXCEL---修改HKEY_CLASSES_ROOTTypeLib{00020813-0000-0000-C000-000000000046}下把1.9的文件夹删掉

WORD---修改HKEY_CLASSES_ROOTTypeLib{00020905-0000-0000-C000-000000000046}下把8.7的文件夹删掉。

注:删除的1.9和8.7文件夹均为空的文件夹,和1.8、8.6的文件夹很容易区分!

改后的效果如下:

技术图片

以上是关于接口的 COM 组件调用 QueryInterface 因以下错误而失败: 库没有注册。的主要内容,如果未能解决你的问题,请参考以下文章

COM技术入门

基于COM组件接口ICMLuaUtil的BypassUAC

第三方接口调用封装

COM组件对象模型基础

调用 IConnectionPoint::Advise 导致崩溃

Excel COM组件使用的注意事项和一些权限问题(转载)