zoukankan      html  css  js  c++  java
  • 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中SoftwareClassesWow6432NodeCLSID内容,修改节点,并导入LocalMachine中SoftwareClassesWow6432NodeCLSID

    在注册表[HKEY_CURRENT_USERSoftwareClassesWow6432NodeCLSID中,

    导出对应错误提示CLSID信息,例如上面提示信息中的:000209FF-0000-4B30-A977-D214852036FE,44720441-94BF-4940-926D-4F38FECF2A47,45540001-5750-5300-4B49-4E47534F4654

    导出后,用记事本打开,用批量替换,将“[HKEY_CURRENT_USER”全部替换为“[HKEY_LOCAL_MACHINE”,之后,保存,双击导入注册表,即可完成LocalMachine节点下SoftwareClassesWow6432NodeCLSID的导入。

    此时在测试程序,提示会变为:

    :无法将类型为“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中SoftwareClassesTypeLib内容,修改节点,并导入LocalMachine中SoftwareClassesTypeLib

    在注册表[HKEY_CURRENT_USERSoftwareClassesTypeLib中,

    导出对应的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节点下SoftwareClassesTypeLib的导入。

    通过上面二步导入,可实现转换PDF正常。

    附整理的修改后导入注册表的文件内容(注意WPS安装路径):

    [HKEY_LOCAL_MACHINESoftwareClassesWow6432NodeCLSID目录下:

    Windows Registry Editor Version 5.00

    [HKEY_LOCAL_MACHINESoftwareClassesWow6432NodeCLSID{000209FF-0000-4b30-A977-D214852036FE}] @="Kingsoft Writer Application Class"

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

    [HKEY_LOCAL_MACHINESoftwareClassesWow6432NodeCLSID{000209FF-0000-4b30-A977-D214852036FE}ProgID] @="WPS.Application.6"

    [HKEY_LOCAL_MACHINESoftwareClassesWow6432NodeCLSID{000209FF-0000-4b30-A977-D214852036FE}Programmable]

    [HKEY_LOCAL_MACHINESoftwareClassesWow6432NodeCLSID{000209FF-0000-4b30-A977-D214852036FE}TypeLib] @="{00020905-0000-4b30-A977-D214852036FE}"

    [HKEY_LOCAL_MACHINESoftwareClassesWow6432NodeCLSID{000209FF-0000-4b30-A977-D214852036FE}VersionIndependentProgID] @="WPS.Application"

    [HKEY_LOCAL_MACHINESoftwareClassesWow6432NodeCLSID{44720441-94BF-4940-926D-4F38FECF2A47}] @="Kingsoft Presentation Application Class"

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

    [HKEY_LOCAL_MACHINESoftwareClassesWow6432NodeCLSID{44720441-94BF-4940-926D-4F38FECF2A47}ProgID] @="WPP.Application.6"

    [HKEY_LOCAL_MACHINESoftwareClassesWow6432NodeCLSID{44720441-94BF-4940-926D-4F38FECF2A47}Programmable]

    [HKEY_LOCAL_MACHINESoftwareClassesWow6432NodeCLSID{44720441-94BF-4940-926D-4F38FECF2A47}TypeLib] @="{44720440-94BF-4940-926D-4F38FECF2A47}"

    [HKEY_LOCAL_MACHINESoftwareClassesWow6432NodeCLSID{44720441-94BF-4940-926D-4F38FECF2A47}VersionIndependentProgID] @="WPP.Application"

    [HKEY_LOCAL_MACHINESoftwareClassesWow6432NodeCLSID{45540001-5750-5300-4B49-4E47534F4654}] @="Kingsoft Spreadsheets Application Class"

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

    [HKEY_LOCAL_MACHINESoftwareClassesWow6432NodeCLSID{45540001-5750-5300-4B49-4E47534F4654}ProgID] @="ET.Application.6"

    [HKEY_LOCAL_MACHINESoftwareClassesWow6432NodeCLSID{45540001-5750-5300-4B49-4E47534F4654}Programmable]

    [HKEY_LOCAL_MACHINESoftwareClassesWow6432NodeCLSID{45540001-5750-5300-4B49-4E47534F4654}TypeLib] @="{45541000-5750-5300-4B49-4E47534F4654}"

    [HKEY_LOCAL_MACHINESoftwareClassesWow6432NodeCLSID{45540001-5750-5300-4B49-4E47534F4654}VersionIndependentProgID] @="ET.Application"

    [HKEY_LOCAL_MACHINESoftwareClassesTypeLib目录下:

    Windows Registry Editor Version 5.00

    [HKEY_LOCAL_MACHINESoftwareClassesTypeLib{00020905-0000-4B30-A977-D214852036FE}]

    [HKEY_LOCAL_MACHINESoftwareClassesTypeLib{00020905-0000-4B30-A977-D214852036FE}2.0] @="Kingsoft WPS 2.0 Object Library"

    [HKEY_LOCAL_MACHINESoftwareClassesTypeLib{00020905-0000-4B30-A977-D214852036FE}2.0]

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

    [HKEY_LOCAL_MACHINESoftwareClassesTypeLib{00020905-0000-4B30-A977-D214852036FE}2.0FLAGS] @="0"

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

    [HKEY_LOCAL_MACHINESoftwareClassesTypeLib{44720440-94BF-4940-926D-4F38FECF2A47}]

    [HKEY_LOCAL_MACHINESoftwareClassesTypeLib{44720440-94BF-4940-926D-4F38FECF2A47}1.0] @="Kingsoft WPP 2.0 Object Library"

    [HKEY_LOCAL_MACHINESoftwareClassesTypeLib{44720440-94BF-4940-926D-4F38FECF2A47}1.0]

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

    [HKEY_LOCAL_MACHINESoftwareClassesTypeLib{44720440-94BF-4940-926D-4F38FECF2A47}1.0FLAGS] @="0"

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

    [HKEY_LOCAL_MACHINESoftwareClassesTypeLib{45541000-5750-5300-4B49-4E47534F4654}]

    [HKEY_LOCAL_MACHINESoftwareClassesTypeLib{45541000-5750-5300-4B49-4E47534F4654}2.0] @="Kingsoft ET 2.0 Object Library"

    [HKEY_LOCAL_MACHINESoftwareClassesTypeLib{45541000-5750-5300-4B49-4E47534F4654}2.0]

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

    [HKEY_LOCAL_MACHINESoftwareClassesTypeLib{45541000-5750-5300-4B49-4E47534F4654}2.0FLAGS] @="0"

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

    [HKEY_LOCAL_MACHINESoftwareClassesTypeLib{4A1D9D13-2EC6-495b-A5B5-848228E0A1CE}]

    [HKEY_LOCAL_MACHINESoftwareClassesTypeLib{4A1D9D13-2EC6-495b-A5B5-848228E0A1CE}1.0] @="Kingsoft Office 1.0 Object Library"

    [HKEY_LOCAL_MACHINESoftwareClassesTypeLib{4A1D9D13-2EC6-495b-A5B5-848228E0A1CE}1.0]

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

    [HKEY_LOCAL_MACHINESoftwareClassesTypeLib{4A1D9D13-2EC6-495b-A5B5-848228E0A1CE}1.0FLAGS] @="0"

  • 相关阅读:
    获得CCNA和CCNP及CCIE认证的必备条件和有效期绍
    Js6利用class创建类
    Js6利用class创建类
    权益证明机制 (PoS):权益决定验证权,谁更有钱谁发言
    关于共识机制的一些想法
    有向无环图 (DAG) 技术:超越区块链的分布式账本
    寻找一种易于理解的一致性算法(扩展版)
    如何使用python语言中的方法对列表进行增删改操作
    如何操作python语言中的元素并计算相应的属性
    如何操作python语言中的列表并获取对应的元素
  • 原文地址:https://www.cnblogs.com/liuliu-NoGirl/p/8670806.html
Copyright © 2011-2022 走看看