我正在 c# 中制作 Outlook 2007 插件。因此,在制作设置文件时,我需要修改注册表项。其中之一是“Manifest”字符串,它具有指向 AddIn 清单文件的链接。通过加载此办公应用程序加载插件。但是当我查看 WebEx 注册表项时,它没有任何清单链接。
为什么会这样?如果没有清单链接,WebEx 是如何做到的?
有(2) 种 Outlook 加载项- COM 加载项和Exchange 客户端扩展。注册表项位置取决于您使用的是x86还是x64平台。
Exchange 客户端扩展:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Exchange\Client\Extensions
Outlook COM 加载项:
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\Outlook\Addins
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 键相关联。基本上,机器已经知道在类注册表中按名称在哪里找到对象,并以这种方式加载适当的 DLL。
要回答您的问题,显然有多种方法可以为您的 Office 应用程序注册加载项。一个是 VSTO 生成的清单,如您所展示的。我认为这是 C# 插件开发中的“现代”方式。
但请记住,Office 加载项只是普通的旧 COM+ 组件。因此,您也可以使用 C、C++ 和其他支持 COM+ 的语言制作插件 :) 要注册这些插件,您需要在 Windows 注册表中添加某些键。
使用 C# 和 Visual Studio,您可以通过在 Build 选项卡下的项目设置中选择“Register for COM Interop”选项将 C# 程序集注册为 COM 组件。这相当于在程序集 (DLL) 上手动运行 .NET 安装附带的 Regasm 实用程序。
现在,如果您已经注册了组件,那么让 Office 应用程序加载您的加载项所需要做的就是使用格式为“namespace.class_extending_appropriate_interface”的注册表项引用此组件。