2010-10-28 43 views
0

J'ai un add-in COM Outlook qui implémente un bouton ruban dans Outlook 2010. Cela fonctionne très bien depuis un certain temps. Jusqu'à ce que quelqu'un essaie de charger l'addin dans la version coréenne d'Outlook. Les boutons du ruban apparaissent mais ne font rien quand on clique dessus. Dans le débogueur, je vois le message d'erreur ci-dessous chaque fois que je clique sur le bouton du ruban "ERREUR: Impossible de charger Typelibrary. (HRESULT = 0x8002801d) Vérifiez TypelibID et la version principale spécifiée avec IDispatchImpl, CStockPropImpl, IProvideClassInfoImpl ou IProvideCLassInfo2Impl".Les boutons du ruban d'ajout COM Outlook ne répondent pas dans Korean Outlook 2010

Je n'atteins jamais mon point d'arrêt dans le rappel pour ce bouton, donc quelque chose se passe dans le calque d'événement au-dessus de mon code je pense. Mais je ne sais pas quoi et je ne sais pas pourquoi l'utilisation de la version coréenne d'Outlook devrait faire toute différente. Quelqu'un a des idées?

Je pense qu'il a quelque chose à voir avec la macro LIBID_Office utilisée ci-dessous lors de la définition des interfaces mon principal Addin prend en charge:

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

La macro est définie comme

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

Bizarrement, si j'inscris mon addin avec regsvr32, tout fonctionne bien en coréen. regsvr32 enregistre des choses à HKLM. Mon propre programme d'installation inscrit les classes à HKCU. Mais quand je fais cela, pour une raison quelconque, la bibliothèque de types n'est pas trouvée. ERREUR: Impossible de charger Typelibrary. (HRESULT = 0x8002801d) Vérifiez TypelibID et la version principale spécifiée avec IDispatchImpl, CStockPropImpl, IProvideClassInfoImpl ou IProvideCLassInfo2Impl –

Répondre

0

La typelib recherche il échoue est le propre typelib COM addin. ProcMon montre Outlook coréen essayant d'obtenir le typelib de HKCR et échouant. Il n'y a aucune raison pour que cela échoue, je peux voir l'enregistrement clairement dans regedit sous la clé HKCR. Comme je l'ai déjà dit, mon addin est installé pour l'utilisateur actuel, donc toutes les inscriptions se font sous "HKCU \ Software \ Classes".

Lorsque je pirate dans une entrée de registre pour mon typelib sous "HKLM \ Software \ Classes", Outlook coréen soudainement trouve tout bien et l'addin fonctionne.

Lorsque l'addin démarrera, je vais juste créer l'entrée typelib sous HKLM. C'est un hack, mais je ne sais pas ce que MS fait Outlook faire en coréen (peut-être d'autres langues?) Lors de la recherche des entrées dans HKCR.

+0

Cela ressemble à un dysfonctionnement de la virtualisation de registre et de l'UAC. Cela se passe sur une boîte Vista avec UAC désactivé. Pourquoi j'ai seulement des problèmes avec cela dans Outlook coréen et pas anglais (j'ai vérifié), je n'ai aucune idée. –