wps插件开发中com组件权限

来源:互联网 发布:不想当程序员 编辑:程序博客网 时间:2024/06/03 19:42

需要对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)

然后继承一个

]

就可以开始开发了,但是在接下来的事情里面就是一个坑了。

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

MessageBox.Show("aaa");

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

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

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

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

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

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

C:\WINDOWS\system32>regsvr32 D:\Program Files\WPS Office\9.1.0.4468\office6\ksaddndr.dll

注册下面dll

C:\WINDOWS\system32>regsvr32 D:\wps\9.1.0.4468\office6\ksoapiv8.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用户了。

感谢作者分享,研究了一下午,终于搜到这篇文章

原:http://www.codeweblog.com/wps%E6%8F%92%E4%BB%B6%E5%BC%80%E5%8F%91%E4%B8%ADcom%E7%BB%84%E4%BB%B6%E6%9D%83%E9%99%90/

原创粉丝点击