在MS Office AddIn中添加没有清单的注册表

我在c#中制作Outlook 2007 AddIn。 因此,在制作安装文件时,我需要修改注册表项。 其中一个是“Manifest”字符串,它包含AddIn的清单文件的链接。 通过加载此Office应用程序加载AddIn。 但是,当我查看WebEx注册表项时,它没有任何Manifest链接。 WebEx注册表项

为什么会这样? WebEx如何处理Manifest链接?

有两种类型的Outlook加载项 – COM加载项和Exchange客户端扩展 。 注册表项位置取决于您使用的是x86还是x64平台。


对于x86:

Exchange客户端扩展
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Exchange\Client\Extensions
Outlook COM加载项
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\Outlook\Addins


对于x64:

Exchange客户端扩展
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Exchange\Client\Extensions
Outlook COM加载项
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\Outlook\Addins

要回答您的问题,实现ID2Extensibility接口的COM插件必须使用不同的注册方法。 具体来说,它们必须注册为COM服务器,因此它们的注册与注册表中的InProcServer32密钥相关联。 基本上,机器已经知道在Class注册表中按名称查找对象的位置,并以这种方式加载适当的DLL。

要回答您的问题,显然有多种方法可以为您的Office应用程序注册加载项。 一个是VSTO生成的清单,正如您已经展示的那样。 我认为它是C#插件开发中的“现代”方式。

但请记住,Office加载项只是普通的旧COM +组件。 因此,您可以使用COM +支持在C,C ++和其他语言中创建加载项:)要注册这些加载项,您需要向Windows注册表添加某些键。

使用C#和Visual Studio,您可以通过在Build选项卡下的项目设置中选择“Register for COM Interop”选项,将C#程序集注册为COM组件。 这与运行Regasm实用程序非常相似,后者在程序集(DLL)上手动安装.NET。

现在,如果您注册了组件,那么让Office应用程序加载加载项所需要做的就是使用格式为“namespace.class_extending_appropriate_interface”的注册表项来引用此组件。