1. 程式人生 > >wps外掛開發中com元件許可權

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)

然後繼承一個

]

就可以開始開發了,但是在接下來的事情裡面就是一個坑了。

在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/