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 刪除后就可以了。