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用户了。

  • 相关阅读:
    hdu 5723 Abandoned country 最小生成树 期望
    OpenJ_POJ C16G Challenge Your Template 迪杰斯特拉
    OpenJ_POJ C16D Extracurricular Sports 打表找规律
    OpenJ_POJ C16B Robot Game 打表找规律
    CCCC 成都信息工程大学游记
    UVALive 6893 The Big Painting hash
    UVALive 6889 City Park 并查集
    UVALive 6888 Ricochet Robots bfs
    UVALive 6886 Golf Bot FFT
    UVALive 6885 Flowery Trails 最短路
  • 原文地址:https://www.cnblogs.com/ac1985482/p/3532074.html
Copyright © 2011-2022 走看看