WPS加載失敗緣由排查

環境:win7 64位 WPS Office 我的版 2013windows

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

轉換word錯誤:測試

檢索 COM 類工廠中 CLSID 爲 {000209FF-0000-4B30-A977-D214852036FE} 的組件失敗,緣由是出現如下錯誤: 80040154 沒有註冊類 (異常來自 HRESULT:0x80040154 (REGDB_E_CLASSNOTREG))。對象

===============================================================接口

轉換PPT錯誤:v8

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

===============================================================io

轉換EXCEL錯誤:軟件

:檢索 COM 類工廠中 CLSID 爲 {45540001-5750-5300-4B49-4E47534F4654} 的組件失敗,緣由是出現如下錯誤: 80040154 沒有註冊類 (異常來自 HRESULT:0x80040154 (REGDB_E_CLASSNOTREG))。配置

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

 

網上查了好久,綜合方法以下:

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

二、更改WPS版本(我的版、商業版);              測試結果:錯誤依舊,無效

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

四、更改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"

相關文章
相關標籤/搜索