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:\test\WordItemDev\WpsItemInsert\bin\Debug\WpsItemInsert.dll”- 拒絕訪問。請確保您正在以管理員身份運行應用程序。對注冊表項“HKEY_CLASSES_ROOT\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用戶了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM