zoukankan      html  css  js  c++  java
  • wps插件开发中com组件权限

    需要对wps写一个小的插件,也就是几行代码的事情,但却碰到了一个坑

    wps中的com组件的调用和MSoffice非常的相似,几乎只需要把包的头修改一下就可以用了。

    比如开发wps文档的插件,需要引用

    1. Kingsoft Add-In Designer
    2. Kingsoft Wps 2.0 Object Library
    3. kingsoft Office 2.0(1.0) Object Library (选2.0的的时候会勾选1.0)

    然后继承一个IDTExtensibility2接口并设置一个[ComVisible(true)]就可以开始开发了,但是在接下来的事情里面就是一个坑了。

    在OnConnection事件里面添加一条弹出一个框

    MessageBox.Show("aaa");

    设置启动类库设置-》生成中设置com互操作组成,然后编译.

    编译的时候由于设置为Com互操作需要使用管理员权限,如果不使用管理员权限会提示

    错误 7 无法注册程序集“E: estWordItemDevWpsItemInsertinDebugWpsItemInsert.dll”- 拒绝访问。请确保您正在以管理员身份运行应用程序。对注册表项“HKEY_CLASSES_ROOTWpsItemInsert.Init”的访问被拒绝。 WpsItemInsert

    于是使用管理员启动visual Studio,但是编译的时候却找不到wps上面的三个组件。

    未能添加对"kingsoft WPS 2.0 Object Library"的引用

    大概就是管理员下com组件没有注册,所以手工来给几个lib注册

    C:WINDOWSsystem32>regsvr32 D:Program FilesWPS Office9.1.0.4468office6ksaddndr.dll

    注册下面dll

    C:WINDOWSsystem32>regsvr32 D:wps9.1.0.4468office6ksoapiv8.dll
    提示模块xxx已经加载,但找不到入口点DllRegisterServerXXXXXXX

    也就是说我在普通模式下编译无法注册com组件,而在管理员模式无法调用wps的com组件。

    在wps论坛上问了这个问题,给的回答是

    使用管理员权限运行vs,但是引wps的com组件出现了问题,在普通运行的时候是没有问题的”这个貌似有点吻合。楼主用登录管理员安装WPS2013试试?
    ps:一般的软件在安装的时候都会提示该软件是仅适用我,还是所有人。如果是仅适用于我的话,就会将注册表信息保存在CurrentUser下,这样只有该用户登录才能看到该软件;如果是选择所有人的话,就会写到LocalMachine节点下

    确实是wps默认只给当前用户注册了com组件,所以在管理员权限下面会找不到wps的com组件

    解决方法

    是去administrator用户下重新安装一下wps就好了。在具有管理员权限的其他用户下使用管理员权限也不行,一定要到adminsitartor用户下才行。

    如果不能进管理员权限,在当前用户下使用管理员权限运行cmd执行

    net user administrator /active:yes

    注销后就能够看到adminsitrator用户了。

  • 相关阅读:
    python之RabbitMQ
    RHEL 使用epel源
    Python操作 Memcache
    LOJ #6053. 简单的函数 (min25筛裸题)
    [51Nod
    Min25筛学习 + 【51nod1847】奇怪的数学题(Min_25筛+杜教筛)
    BZOJ 3331: [BeiJing2013]压力 (点双 圆方树 树链剖分 线段树)
    BZOJ 2125: 最短路(仙人掌 圆方树)
    模拟赛题解 naive (二分)
    BZOJ 2286 [Sdoi2011]消耗战 (虚树模板题)
  • 原文地址:https://www.cnblogs.com/ac1985482/p/3532074.html
Copyright © 2011-2022 走看看