office修复真实案例
1. 用户无法预览word
客户电脑上安装的客户端无法正常预览word,并报错;
电脑参数:
-
Windows版本:Windows 10 企业版 2015 长期服务方案
-
处理器:Intel(R) Core(TM) i5-4590S CPU @ 3.00GHz 3.00GHz
-
内存:8.00 GB
-
系统类型:64 位操作系统,基于 x64 的处理器
-
office 版本:2013
错误详情:
2020-04-24 11:47:19,425 DEBUG [][0]- 正要使用Word应用打开文件C:\Users\Administrator\Documents\移动授课\魏林\七年级\1班\语文\20200424113510\人教部编版七年级上册1 .1《春》 教学案.doc。
2020-04-24 11:47:24,967 ERROR [][0]- word转换pdf失败,无法将类型为“Microsoft.Office.Interop.Word.ApplicationClass”的 COM 对象强制转换为接口类型“Microsoft.Office.Interop.Word._Application”。此操作失败的原因是对 IID 为“{00020970-0000-0000-C000-000000000046}”的接口的 COM 组件调用 QueryInterface 因以下错误而失败: 库没有注册。 (异常来自 HRESULT:0x8002801D (TYPE_E_LIBNOTREGISTERED))。System.InvalidCastException: 无法将类型为“Microsoft.Office.Interop.Word.ApplicationClass”的 COM 对象强制转换为接口类型“Microsoft.Office.Interop.Word._Application”。此操作失败的原因是对 IID 为“{00020970-0000-0000-C000-000000000046}”的接口的 COM 组件调用 QueryInterface 因以下错误而失败: 库没有注册。 (异常来自 HRESULT:0x8002801D (TYPE_E_LIBNOTREGISTERED))。
在 System.StubHelpers.StubHelpers.GetCOMIPFromRCW(Object objSrc, IntPtr pCPCMD, IntPtr& ppTarget, Boolean& pfNeedsRelease)
在 Microsoft.Office.Interop.Word.ApplicationClass.get_Documents()
在 EasyClassServer.Widgets.OfficeFileHandler.WordToPDF(String sourcePath, String targetPath)
2020-04-24 11:47:24,980 ERROR [][0]- 打开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))。System.InvalidCastException: 无法将类型为“Microsoft.Office.Interop.Word.ApplicationClass”的 COM 对象强制转换为接口类型“Microsoft.Office.Interop.Word._Application”。此操作失败的原因是对 IID 为“{00020970-0000-0000-C000-000000000046}”的接口的 COM 组件调用 QueryInterface 因以下错误而失败: 库没有注册。 (异常来自 HRESULT:0x8002801D (TYPE_E_LIBNOTREGISTERED))。
在 System.StubHelpers.StubHelpers.GetCOMIPFromRCW(Object objSrc, IntPtr pCPCMD, IntPtr& ppTarget, Boolean& pfNeedsRelease)
在 Microsoft.Office.Interop.Word.ApplicationClass.Quit(Object& SaveChanges, Object& OriginalFormat, Object& RouteDocument)
在 EasyClassServer.Widgets.OfficeFileHandler.WordToPDF(String sourcePath, String targetPath)
在 EasyClassServer.Widgets.OfficeFileHandler.<>c__DisplayClass41_0.<OpenWordFile>b__0()
解决方案
猜测是由于电脑之前安装过 Office 或者 WPS,卸载不干净导致。
-
打开注册表,找到 HKEY_CLASSES_ROOT\TypeLib{00020905-0000-0000-C000-000000000046}
-
office 2007 对应 8.4,office2010对应 8.5,office2013对应 8.6,office2016、2019对应 8.7。当时机器上除了8.6,还有一个空的 8.7,将 8.7 删除后就可以了。