WPS加載失敗原因排查


環境:win7 64位 WPS Office 個人版 2013

使用WPS的API轉換PDF,在程序中運行正常,但是一旦發布為windows服務,則一直有下面的錯誤提示:

轉換word錯誤:

檢索 COM 類工廠中 CLSID 為 {000209FF-0000-4B30-A977-D214852036FE} 的組件失敗,原因是出現以下錯誤: 80040154 沒有注冊類 (異常來自 HRESULT:0x80040154 (REGDB_E_CLASSNOTREG))。

===============================================================

轉換PPT錯誤:

:檢索 COM 類工廠中 CLSID 為 {44720441-94BF-4940-926D-4F38FECF2A47} 的組件失敗,原因是出現以下錯誤: 80040154 沒有注冊類 (異常來自 HRESULT:0x80040154 (REGDB_E_CLASSNOTREG))。

===============================================================

轉換EXCEL錯誤:

:檢索 COM 類工廠中 CLSID 為 {45540001-5750-5300-4B49-4E47534F4654} 的組件失敗,原因是出現以下錯誤: 80040154 沒有注冊類 (異常來自 HRESULT:0x80040154 (REGDB_E_CLASSNOTREG))。

===============================================================

 

網上查了很久,綜合方法如下:

1、代碼生成平台改為X86;   測試結果:錯誤依舊,無效

2、更改WPS版本(個人版、商業版);              測試結果:錯誤依舊,無效

3、更改DCOM配置中的權限,登陸用戶;            測試結果:錯誤依舊,無效

4、更改WPS版本為WPS2010;                        測試結果:轉換正常,成功

 

原因:一般軟件安裝時,會提示選擇使用用戶:當前登陸用戶或者所有用戶,如果選擇當前登陸用戶,會將信息寫入注冊表CurrentUser下;如果選擇所有用戶,會將信息寫入注冊表LocalMachine中。

WPS2013不允許選擇使用用戶,默認將注冊表信息保存在CurrentUser下,而WPS2010默認是選擇所有人的,寫到LocalMachine節點下

無法理解的是:我是用administrator用戶登陸win7,按理就算當前用戶,而windows服務登陸用戶也是系統用戶,不應該出現這種錯誤,但實際上還有這種錯誤……

 

研究了3天,各種能嘗試的方法都嘗試過,最終想到的解決辦法如下:

將注冊表中WPS2013保存在CurrentUser節點下的部分內容導出,並導入LocalMachine節點下,可實現正常轉換。

第一步:導出注冊表CurrentUse中Software\Classes\Wow6432Node\CLSID內容,修改節點,並導入LocalMachine中Software\Classes\Wow6432Node\CLSID

在注冊表[HKEY_CURRENT_USER\Software\Classes\Wow6432Node\CLSID\中,

導出對應錯誤提示CLSID信息,例如上面提示信息中的:000209FF-0000-4B30-A977-D214852036FE,44720441-94BF-4940-926D-4F38FECF2A47,45540001-5750-5300-4B49-4E47534F4654

導出后,用記事本打開,用批量替換,將“[HKEY_CURRENT_USER\”全部替換為“[HKEY_LOCAL_MACHINE\”,之后,保存,雙擊導入注冊表,即可完成LocalMachine節點下Software\Classes\Wow6432Node\CLSID\的導入。

此時在測試程序,提示會變為:

:無法將類型為“System.__ComObject”的 COM 對象強制轉換為接口類型“ET.Application”。此操作失敗的原因是對 IID 為“{45541001-5750-5300-4B49-4E47534F4654}”的接口的 COM 組件調用 QueryInterface 因以下錯誤而失敗: 庫沒有注冊。 (異常來自 HRESULT:0x8002801D (TYPE_E_LIBNOTREGISTERED))。

===============================================================

:無法將類型為“System.__ComObject”的 COM 對象強制轉換為接口類型“WPP.Application”。此操作失敗的原因是對 IID 為“{44720442-94BF-4940-926D-4F38FECF2A47}”的接口的 COM 組件調用 QueryInterface 因以下錯誤而失敗: 庫沒有注冊。 (異常來自 HRESULT:0x8002801D (TYPE_E_LIBNOTREGISTERED))。

===============================================================

:無法將類型為“System.__ComObject”的 COM 對象強制轉換為接口類型“WPS.Application”。此操作失敗的原因是對 IID 為“{00020970-0000-4B30-A977-D214852036FE}”的接口的 COM 組件調用 QueryInterface 因以下錯誤而失敗: 庫沒有注冊。 (異常來自 HRESULT:0x8002801D (TYPE_E_LIBNOTREGISTERED))。

===============================================================

第二步:導出注冊表CurrentUse中Software\Classes\TypeLib內容,修改節點,並導入LocalMachine中Software\Classes\TypeLib

在注冊表[HKEY_CURRENT_USER\Software\Classes\TypeLib\中,

導出對應的ID信息,ID來源,分別為代碼中添加引用的組件標識:

Interop.WPS標識ID:00020905-0000-4b30-A977-D214852036FE

Interop.WPP標識ID:44720440-94BF-4940-926D-4F38FECF2A47

Interop.ET標識ID:45541000-5750-5300-4B49-4E47534F4654

Interop.KSO標識ID:4A1D9D13-2EC6-495B-A5B5-848228E0A1CE

導出后,用記事本打開,用批量替換,將“[HKEY_CURRENT_USER\”全部替換為“[HKEY_LOCAL_MACHINE\”,之后,保存,雙擊導入注冊表,即可完成LocalMachine節點下Software\Classes\TypeLib\的導入。

通過上面二步導入,可實現轉換PDF正常。

 

附整理的修改后導入注冊表的文件內容(注意WPS安裝路徑):

[HKEY_LOCAL_MACHINE\Software\Classes\Wow6432Node\CLSID目錄下:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\Software\Classes\Wow6432Node\CLSID\{000209FF-0000-4b30-A977-D214852036FE}] @="Kingsoft Writer Application Class"

[HKEY_LOCAL_MACHINE\Software\Classes\Wow6432Node\CLSID\{000209FF-0000-4b30-A977-D214852036FE}\LocalServer32] @="D:\\Program Files (x86)\\Kingsoft\\WPS Office\\9.1.0.4468\\office6\\wps.exe /Automation"

[HKEY_LOCAL_MACHINE\Software\Classes\Wow6432Node\CLSID\{000209FF-0000-4b30-A977-D214852036FE}\ProgID] @="WPS.Application.6"

[HKEY_LOCAL_MACHINE\Software\Classes\Wow6432Node\CLSID\{000209FF-0000-4b30-A977-D214852036FE}\Programmable]

[HKEY_LOCAL_MACHINE\Software\Classes\Wow6432Node\CLSID\{000209FF-0000-4b30-A977-D214852036FE}\TypeLib] @="{00020905-0000-4b30-A977-D214852036FE}"

[HKEY_LOCAL_MACHINE\Software\Classes\Wow6432Node\CLSID\{000209FF-0000-4b30-A977-D214852036FE}\VersionIndependentProgID] @="WPS.Application"

[HKEY_LOCAL_MACHINE\Software\Classes\Wow6432Node\CLSID\{44720441-94BF-4940-926D-4F38FECF2A47}] @="Kingsoft Presentation Application Class"

[HKEY_LOCAL_MACHINE\Software\Classes\Wow6432Node\CLSID\{44720441-94BF-4940-926D-4F38FECF2A47}\LocalServer32] @="D:\\Program Files (x86)\\Kingsoft\\WPS Office\\9.1.0.4468\\office6\\wpp.exe /Automation"

[HKEY_LOCAL_MACHINE\Software\Classes\Wow6432Node\CLSID\{44720441-94BF-4940-926D-4F38FECF2A47}\ProgID] @="WPP.Application.6"

[HKEY_LOCAL_MACHINE\Software\Classes\Wow6432Node\CLSID\{44720441-94BF-4940-926D-4F38FECF2A47}\Programmable]

[HKEY_LOCAL_MACHINE\Software\Classes\Wow6432Node\CLSID\{44720441-94BF-4940-926D-4F38FECF2A47}\TypeLib] @="{44720440-94BF-4940-926D-4F38FECF2A47}"

[HKEY_LOCAL_MACHINE\Software\Classes\Wow6432Node\CLSID\{44720441-94BF-4940-926D-4F38FECF2A47}\VersionIndependentProgID] @="WPP.Application"

[HKEY_LOCAL_MACHINE\Software\Classes\Wow6432Node\CLSID\{45540001-5750-5300-4B49-4E47534F4654}] @="Kingsoft Spreadsheets Application Class"

[HKEY_LOCAL_MACHINE\Software\Classes\Wow6432Node\CLSID\{45540001-5750-5300-4B49-4E47534F4654}\LocalServer32] @="D:\\Program Files (x86)\\Kingsoft\\WPS Office\\9.1.0.4468\\office6\\et.exe /Automation"

[HKEY_LOCAL_MACHINE\Software\Classes\Wow6432Node\CLSID\{45540001-5750-5300-4B49-4E47534F4654}\ProgID] @="ET.Application.6"

[HKEY_LOCAL_MACHINE\Software\Classes\Wow6432Node\CLSID\{45540001-5750-5300-4B49-4E47534F4654}\Programmable]

[HKEY_LOCAL_MACHINE\Software\Classes\Wow6432Node\CLSID\{45540001-5750-5300-4B49-4E47534F4654}\TypeLib] @="{45541000-5750-5300-4B49-4E47534F4654}"

[HKEY_LOCAL_MACHINE\Software\Classes\Wow6432Node\CLSID\{45540001-5750-5300-4B49-4E47534F4654}\VersionIndependentProgID] @="ET.Application"

 

[HKEY_LOCAL_MACHINE\Software\Classes\TypeLib目錄下:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\Software\Classes\TypeLib\{00020905-0000-4B30-A977-D214852036FE}]

[HKEY_LOCAL_MACHINE\Software\Classes\TypeLib\{00020905-0000-4B30-A977-D214852036FE}\2.0] @="Kingsoft WPS 2.0 Object Library"

[HKEY_LOCAL_MACHINE\Software\Classes\TypeLib\{00020905-0000-4B30-A977-D214852036FE}\2.0\0]

[HKEY_LOCAL_MACHINE\Software\Classes\TypeLib\{00020905-0000-4B30-A977-D214852036FE}\2.0\0\win32] @="D:\\Program Files (x86)\\Kingsoft\\WPS Office\\9.1.0.4468\\office6\\wpsapiv8.dll"

[HKEY_LOCAL_MACHINE\Software\Classes\TypeLib\{00020905-0000-4B30-A977-D214852036FE}\2.0\FLAGS] @="0"

[HKEY_LOCAL_MACHINE\Software\Classes\TypeLib\{00020905-0000-4B30-A977-D214852036FE}\2.0\HELPDIR] @="D:\\Program Files (x86)\\Kingsoft\\WPS Office\\9.1.0.4468\\office6\\wpsapiv8.dll"

[HKEY_LOCAL_MACHINE\Software\Classes\TypeLib\{44720440-94BF-4940-926D-4F38FECF2A47}]

[HKEY_LOCAL_MACHINE\Software\Classes\TypeLib\{44720440-94BF-4940-926D-4F38FECF2A47}\1.0] @="Kingsoft WPP 2.0 Object Library"

[HKEY_LOCAL_MACHINE\Software\Classes\TypeLib\{44720440-94BF-4940-926D-4F38FECF2A47}\1.0\0]

[HKEY_LOCAL_MACHINE\Software\Classes\TypeLib\{44720440-94BF-4940-926D-4F38FECF2A47}\1.0\0\win32] @="D:\\Program Files (x86)\\Kingsoft\\WPS Office\\9.1.0.4468\\office6\\wppapiv8.dll"

[HKEY_LOCAL_MACHINE\Software\Classes\TypeLib\{44720440-94BF-4940-926D-4F38FECF2A47}\1.0\FLAGS] @="0"

[HKEY_LOCAL_MACHINE\Software\Classes\TypeLib\{44720440-94BF-4940-926D-4F38FECF2A47}\1.0\HELPDIR] @="D:\\Program Files (x86)\\Kingsoft\\WPS Office\\9.1.0.4468\\office6\\wppapiv8.dll"

[HKEY_LOCAL_MACHINE\Software\Classes\TypeLib\{45541000-5750-5300-4B49-4E47534F4654}]

[HKEY_LOCAL_MACHINE\Software\Classes\TypeLib\{45541000-5750-5300-4B49-4E47534F4654}\2.0] @="Kingsoft ET 2.0 Object Library"

[HKEY_LOCAL_MACHINE\Software\Classes\TypeLib\{45541000-5750-5300-4B49-4E47534F4654}\2.0\0]

[HKEY_LOCAL_MACHINE\Software\Classes\TypeLib\{45541000-5750-5300-4B49-4E47534F4654}\2.0\0\win32] @="D:\\Program Files (x86)\\Kingsoft\\WPS Office\\9.1.0.4468\\office6\\etapiv8.dll"

[HKEY_LOCAL_MACHINE\Software\Classes\TypeLib\{45541000-5750-5300-4B49-4E47534F4654}\2.0\FLAGS] @="0"

[HKEY_LOCAL_MACHINE\Software\Classes\TypeLib\{45541000-5750-5300-4B49-4E47534F4654}\2.0\HELPDIR] @="D:\\Program Files (x86)\\Kingsoft\\WPS Office\\9.1.0.4468\\office6\\etapiv8.dll"

[HKEY_LOCAL_MACHINE\Software\Classes\TypeLib\{4A1D9D13-2EC6-495b-A5B5-848228E0A1CE}]

[HKEY_LOCAL_MACHINE\Software\Classes\TypeLib\{4A1D9D13-2EC6-495b-A5B5-848228E0A1CE}\1.0] @="Kingsoft Office 1.0 Object Library"

[HKEY_LOCAL_MACHINE\Software\Classes\TypeLib\{4A1D9D13-2EC6-495b-A5B5-848228E0A1CE}\1.0\0]

[HKEY_LOCAL_MACHINE\Software\Classes\TypeLib\{4A1D9D13-2EC6-495b-A5B5-848228E0A1CE}\1.0\0\win32] @="D:\\Program Files (x86)\\Kingsoft\\WPS Office\\9.1.0.4468\\office6\\ksoapiv8.dll"

[HKEY_LOCAL_MACHINE\Software\Classes\TypeLib\{4A1D9D13-2EC6-495b-A5B5-848228E0A1CE}\1.0\FLAGS] @="0"


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM