2010-10-28 55 views
0

我有一個COM Outlook插件,它在Outlook 2010中實現了一個功能區按鈕。它在一段時間內工作得很好。直到有人試圖在韓文版的Outlook中加載插件。功能區按鈕顯示,但點擊時不做任何操作。在調試器,我見下文每當我點擊區按鈕錯誤消息「ERROR:無法加載類型庫(HRESULT = 0x8002801d) 校驗帶有 的IDispatchImpl,CStockPropImpl,IProvideClassInfoImpl或IProvideCLassInfo2Impl指定TypelibID和主要版本」。COM Outlook插件功能區按鈕在韓語Outlook 2010中未響應

我從來沒有在這個按鈕的回調中打破我的斷點,所以我認爲在我的代碼上面的事件層中發生了一些事情。但我不知道爲什麼,我不知道爲什麼使用韓語版的Outlook應該會有所不同。有人有主意嗎?

我想它是與定義的接口時,我的主要插件下面使用的LIBID_Office宏觀支持:

, public IDispatchImpl<IRibbonExtensibility, 
    &__uuidof(IRibbonExtensibility), 
    &LIBID_Office, /* wMajor = */ 2, /* wMinor = */ 4> 

的宏定義爲

extern "C" const GUID __declspec(selectany) LIBID_Office = 
    {0x2df8d04c,0x5bfa,0x101b,{0xbd,0xe5,0x00,0xaa,0x00,0x44,0xde,0x52}}; 
+0

奇怪的是,如果我用regsvr32註冊我的插件,在韓語中一切正常。 regsvr32正在向HKLM註冊。我自己的安裝程序將類註冊到HKCU。但是當我這樣做時,出於某種原因沒有找到類型庫。錯誤:無法加載Typelibrary。 (HRESULT = 0x8002801d)驗證IDispatchImpl,CStockPropImpl,IProvideClassInfoImpl或IProvideCLassInfo2Impl指定的TypelibID和主要版本 – 2010-11-03 18:52:41

回答

0

類型庫查找它是失敗的是COM插件自己的typelib。 ProcMon顯示韓國Outlook試圖從HKCR獲取typelib並失敗。沒有理由爲什麼它會失敗,我可以根據HKCR密鑰清楚地註冊註冊。

正如我之前所說,我的插件是爲當前用戶安裝的,所以所有註冊都在「HKCU \ Software \ Classes」下完成。

當我在我的typelib的「HKLM \ Software \ Classes」下注冊表項時,突然韓國Outlook發現一切正常,插件工作。

當插件啓動時,我只是想讓它在HKLM下創建typelib條目。這是一種黑客攻擊,但我不知道MS在查看HKCR中的條目時是否有朝鮮語(可能還有其他語言)的Outlook。

+0

這聽起來像我與UAC和註冊表虛擬化發生衝突。這發生在UAC關閉的Vista盒子上。爲什麼我只在韓語展望方面遇到問題,而不是英語(我已經驗證),我不知道。 – 2010-11-04 19:54:46

相關問題