VSTO 外接程序的注册表项

部署使用 Visual Studio 创建的 VSTO 外接程序时,必须创建一组特定的注册表项。 这些注册表项可提供一些信息,使 Microsoft Office 应用程序能够发现和加载 VSTO 外接程序。

适用于: 本主题中的信息适用于 VSTO 外接程序项目。 有关详细信息,请参阅办公室应用程序和项目类型提供的功能。

注意

有兴趣开发跨多个平台扩展办公室体验的解决方案? 查看新的办公室外接程序模型。 与 VSTO 外接程序和解决方案相比,办公室外接程序的占用空间较小,可以使用几乎任何 Web 编程技术(如 HTML5、JavaScript、CSS3 和 XML)生成它们。

生成项目时,Visual Studio 会在开发计算机上创建这些注册表项。 这有助于轻松运行和调试 VSTO 外接程序。 使用 ClickOnce 部署 VSTO 外接程序,会在最终用户计算机上自动创建注册表项。

有关如何使用 Windows Installer 部署 VSTO 解决方案的详细信息,请参阅 使用 Windows Installer 部署 VSTO 解决方案。

有关如何在 VSTO 外接程序加载过程中使用注册表项的详细信息,请参阅 Architecture of VSTO Add-ins

注意

在本主题中,文本 外接程序 ID 表示 VSTO 外接程序的唯一 ID。 默认情况下,该 ID 是 VSTO 外接程序程序集的名称。

为当前用户注册 VSTO 外接程序与所有用户

安装 VSTO 外接程序后,可以按两种方式注册:

  • 仅适用于当前用户(VSTO 外接程序仅适用于安装加载项时登录到计算机的用户)。 在这种情况下,注册表项是在 HKEY_CURRENT_U标准版R创建的。

  • 对于所有用户(也就是说,登录到计算机的任何用户都可以使用 VSTO 外接程序)。 在这种情况下,注册表项在HKEY_LOCAL_MACHINE创建。

    使用 Visual Studio 创建的所有 VSTO 外接程序均可针对当前用户注册。 但是,仅在特定场景下才可针对所有用户注册 VSTO 外接程序。 这些场景取决于计算机上 Microsoft Office 的版本和 VSTO 外接程序的部署方式。

部署类型

如果使用 ClickOnce 部署 VSTO 外接程序,则仅可针对当前用户注册 VSTO 外接程序。 这是因为 ClickOnce 仅支持在 HKEY_CURRENT_U标准版R创建密钥。 如果想要向计算机上的所有用户注册 VSTO 外接程序,则必须使用 Windows Installer 部署 VSTO 外接程序。 有关这些部署类型的详细信息,请参阅使用 ClickOnce 部署办公室解决方案,并使用 Windows Installer 部署办公室解决方案。

注册表项

所需的 VSTO 外接程序注册表项位于以下注册表项下,根目录为 HKEY_CURRENT_U标准版RHKEY_LOCAL_MACHINE,具体取决于安装是针对当前用户还是所有用户。

办公室应用程序 配置路径
Visio Root\Software\Microsoft\Visio\Addins\add-in ID
所有其他 Root\Software\Microsoft\办公室\办公室应用程序名称\Addins\add-in ID

注意

如果安装程序面向 64 位 Windows 上的所有用户,则建议它包括两个注册表项,一个位于 HKEY_LOCAL_MACHINE\Software\Microsoft 下,另一个位于 HKEY_LOCAL_MACHINE\Software\WOW6432Node\Microsoft hive 下。 这是因为用户可以在计算机上使用 32 位或 64 位版本的 办公室。

如果安装程序面向当前用户,则不需要安装到 WOW6432Node,因为共享 HKEY_CURRENT_U标准版R\Software 路径。

有关详细信息,请参阅 注册表中的 32 位和 64 位应用程序数据。

下表列出了此注册表项下的条目。

条目 类型
描述 REG_SZ 必需。 VSTO 外接程序的简短说明。

当用户在 Microsoft Office 应用程序的 “选项” 对话框的 “外接程序” 窗格中选择 VSTO 外接程序时,将会显示此说明。
FriendlyName REG_SZ 必需。 Microsoft Office 应用程序中的 “COM 外接程序” 对话框中显示的 VSTO 外接程序的描述性名称。 默认值为 VSTO 外接程序 ID。
LoadBehavior REG_DWORD 必需。 一个值,用于指定应用程序在何时尝试加载 VSTO 外接程序以及 VSTO 外接程序的当前状态(已加载或卸载)。

默认情况下,此项设置为 3,指定在启动时加载 VSTO 外接程序。 有关详细信息,请参阅 LoadBehavior 值

注意:如果用户禁用 VSTO 外接程序,该操作会修改 HKEY_CURRENT_U标准版R 注册表配置单元中的 LoadBehavior 值。 对于每个用户,HKEY_CURRENT_U标准版R hive 中 LoadBehavior 值的值将替代在 HKEY_LOCAL_MACHINE hive 中定义的默认 LoadBehavior
Manifest REG_SZ 必需。 VSTO 外接程序部署清单的完整路径。 该路径可以是本地计算机上的某个位置,也可以是网络共享 (UNC) 或 Web 服务器 (HTTP)。

如果使用 Windows Installer 部署解决方案,则必须向 清单 路径添加前缀 file:/// 。 还必须将字符串 |vstolocal(即 vstolocal 后跟 vstolocal 的管道字符|)追加到此路径的末尾。 这可确保从安装文件夹,而非 ClickOnce 缓存加载你的解决方案。 有关详细信息,请参阅使用 Windows Installer 部署办公室解决方案。

注意:在开发计算机上生成 VSTO 外接程序时,Visual Studio 会自动将 |vstolocal 字符串追加到此注册表项。

Outlook 窗体区域的注册表项

如果在 Outlook 的 VSTO 外接程序中创建自定义窗体区域,则会使用其他注册表项在 Outlook 中注册该窗体区域。 这些项是在针对窗体区域支持的每个邮件类别的不同注册表项下创建的。 这些注册表项位于以下位置,其中 RootHKEY_CURRENT_U标准版RHKEY_LOCAL_MACHINE

Root\Software\Microsoft\办公室\Outlook\FormRegions\message 类

与所有 VSTO 外接程序共享的其他注册表项类似,生成项目时,Visual Studio 会在开发计算机上创建窗体区域注册表项。 使用 ClickOnce 部署 VSTO 外接程序,会在最终用户计算机上自动创建注册表项。 使用 Windows Installer 部署 VSTO 外接程序时,必须将 InstallShield Limited Edition 项目配置为在最终用户计算机上创建注册表项。

有关窗体区域注册表项的详细信息,请参阅 指定窗体区域在自定义窗体中的位置。 有关 Outlook 窗体区域的详细信息,请参阅 “创建 Outlook 窗体区域”。

LoadBehavior 值

Root\Software\Microsoft\办公室\application name\Addins\add-in ID 键下的 LoadBehavior 条目包含指定 VSTO 外接程序的运行时行为的按位组合。 最低顺序位(值 0 和 1)指示 VSTO 外接程序当前是已卸载还是已加载。 其他位指示应用程序何时尝试加载 VSTO 外接程序。

通常,在最终用户计算机上安装 VSTO 外接程序时, LoadBehavior 条目应设置为 0、3 或 16(以十进制为单位)。 默认情况下,在生成或发布 VSTO 外接程序时,Visual Studio 会将外接程序的 LoadBehavior 条目设置为 3。

下表列出了 LoadBehavior 条目的所有可能的值。 此表中的一些描述涉及手动或以编程方式加载 VSTO 外接程序。 若要手动加载 VSTO 外接程序,在应用程序的 “COM 外接程序” 对话框中选择 VSTO 外接程序旁的复选框。 若要以编程方式加载 VSTO 外接程序,请将表示 VSTO 外接程序的 Connect 对象的 COMAddIn 属性设置为 true

值(采用十进制) VSTO 外接程序状态 VSTO 外接程序加载行为 说明
0 已卸载 不自动加载 应用程序从不尝试自动加载 VSTO 外接程序。 用户可尝试手动加载 VSTO 外接程序,也可以编程方式加载 VSTO 外接程序。

如果 VSTO 外接程序加载成功,则 LoadBehavior 值保持为 0,但将更新 “COM 外接程序” 对话框中的 VSTO 外接程序状态,以指示已加载 VSTO 外接程序。
1 已加载 不自动加载 应用程序从不尝试自动加载 VSTO 外接程序。 用户可尝试手动加载 VSTO 外接程序,也可以编程方式加载 VSTO 外接程序。

尽管 COM 加载项对话框指示 VSTO 外接程序在应用程序启动后加载,但在手动或以编程方式加载 VSTO 外接程序之前,不会加载 VSTO 外接程序。

如果应用程序成功加载 VSTO 外接程序,则 LoadBehavior 值更改为 0,并在应用程序关闭后仍然保持为 0。
2 已卸载 在启动时加载 应用程序不会尝试自动加载 VSTO 外接程序。 用户可尝试手动加载 VSTO 外接程序,也可以编程方式加载 VSTO 外接程序。

如果应用程序成功加载 VSTO 外接程序,则 LoadBehavior 值更改为 3,并在应用程序关闭后仍然保持为 3。
3 已加载 在启动时加载 应用程序在启动时尝试加载 VSTO 外接程序。 在 Visual Studio 中生成或发布 VSTO 外接程序时,这是默认值。

如果应用程序成功加载 VSTO 外接程序,则 LoadBehavior 值保持为 3。 如果加载 VSTO 外接程序时出错,则 LoadBehavior 值更改为 2,并在应用程序关闭后仍然保持为 2。
8 已卸载 按需加载 应用程序不会尝试自动加载 VSTO 外接程序。 用户可尝试手动加载 VSTO 外接程序,也可以编程方式加载 VSTO 外接程序。

如果应用程序成功加载 VSTO 外接程序,则 LoadBehavior 值更改为 9。
9 已加载 按需加载 仅当应用程序需要 VSTO 外接程序时,才会加载它。 例如,当用户选择使用 VSTO 外接程序中的功能的 UI 元素(例如功能区中的自定义按钮)时。

如果应用程序成功加载 VSTO 外接程序,则 LoadBehavior 值保持为 9,但将更新 “COM 外接程序” 对话框中的外接程序状态,以指示当前已加载 VSTO 外接程序。 如果加载 VSTO 外接程序时出错,则 LoadBehavior 值更改为 8。
16 已加载 第一次时加载,然后按需加载 如果想要按需加载 VSTO 外接程序,请设置此值。 用户第一次运行应用程序时,应用程序将加载 VSTO 外接程序。 下次用户运行应用程序时,应用程序将加载由 VSTO 外接程序定义的任何 UI 元素。 但是,在用户选择与 VSTO 外接程序关联的 UI 元素之前,不会加载 VSTO 外接程序。

应用程序第一次成功加载 VSTO 外接程序时, LoadBehavior 值在加载 VSTO 外接程序后保持为 16。 应用程序关闭后, LoadBehavior 值更改为 9。