65.9K
CodeProject 正在变化。 阅读更多。
Home

Outlook 插件,用于解锁 .NET 中被阻止的附件

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.50/5 (2投票s)

2008 年 4 月 9 日

CPOL

3分钟阅读

viewsIcon

39680

downloadIcon

393

一个用 .NET 编写的 Outlook 插件,允许解锁被阻止的文件附件。

引言

默认情况下,Microsoft Outlook 被配置为根据文件扩展名阻止特定的文件附件。这在大多数情况下对于防止电子邮件病毒的传播和保护您的 PC 安全很有用。但是,有时您可能希望覆盖此行为以便打开来自已知来源的附件,这些附件通常是无法访问的。有关被阻止的文件扩展名的列表,请参见此处

由于某些原因,标准版本的 Microsoft Outlook 不允许用户配置或禁用这些安全设置,尽管可以通过调整注册表来控制行为。

本文中包含的 .NET 窗体应用程序是基于“自动化和可扩展性”框架构建的示例,该框架允许通过 Outlook 插件控制注册表设置。这在 Outlook 的“选项”菜单中添加了一个额外的选项卡,并允许调整安全设置以实现自定义行为。

背景

Microsoft Outlook 内的附件安全功能通过两个字符串注册表键(Level1AddLevel1Remove)进行控制。这些键可以添加到以下位置,并允许覆盖阻止附件的默认行为

Note: 10.0 will vary depending on the version installed
HKEY_CURRENT_USER\Software\Microsoft\Office\10.0\Outlook\Security

添加后,每个键表示一个由分号分隔的文件扩展名列表,用于阻止 (Level1Add) 或取消阻止 (Level1Remove)。可以使用更多用于 *level2* 安全设置的键进一步自定义安全性;但是,这超出了本文的范围。

Outlook 解锁器

通过运行 Setup.exe 安装 OutlookUnlocker 插件。这在 Outlook 的“选项”菜单中添加了一个“附件解锁器”选项卡,可以通过“工具”菜单访问。将要阻止或取消阻止的扩展名相应地输入到已阻止/未阻止列表中。通过在相关的输入框中键入文本并按 Enter 键来执行此操作。

添加扩展名后,可以通过突出显示该项目并使用 <> 箭头将其移动到已阻止或未阻止的列表。可以通过突出显示一个项目并使用 X 按钮从已阻止和未阻止的列表中删除项目。未列出的扩展名将恢复为这些扩展类型的默认 Outlook 行为。您需要重新启动 Outlook 以使更改生效。

工作原理

该解决方案基于 自动化和可扩展性 框架,使用 .NET 的 Visual Studio 共享插件 项目模板构建。这创建了一个插件模板项目以及一个用于安装插件的安装项目。

简而言之,可扩展性框架允许托管的 .NET 程序集通过代理(shim)对象与非托管的 COM 代码通信。这允许 IDE(如 Outlook)引发事件,插件可以对这些事件做出响应以便与应用程序集成;例如,在加载或卸载插件时。接口 IDTExtensibility2 通常用于此目的以钩入应用程序事件。

Outlook Unlocker 解决方案包含一个名为 Connect 的类。这是项目模板创建的 IDTExtensibility2 接口的实现。为了在“选项”菜单中添加一个额外的选项卡,我们必须在 OnConnection 事件期间注册 OptionsPagesAdd 事件,如下所示

// On connection register for the OptionsPagesAdd event
public void OnConnection(object application, Extensibility.ext_ConnectMode 
            connectMode, object addInInst, ref System.Array custom)
{
    Microsoft.Office.Interop.Outlook.Application applicationObject = 
          (Microsoft.Office.Interop.Outlook.Application)application;
    applicationObject.OptionsPagesAdd += new 
      ApplicationEvents_11_OptionsPagesAddEventHandler(applicationObject_OptionsPagesAdd);
}
// When the OptionsPagesAdd is fired, add the custom property page 
private void applicationObject_OptionsPagesAdd(PropertyPages Pages)
{
    Pages.Add(new Unlocker(), "Attachment Unlocker");
}

当触发 OptionsPagesAdd 事件时,名为 Unlocker 的自定义用户控件将添加到 Pages 集合中。该控件实现了一个从对 Microsoft.Office.Interop.Outlook 程序集的引用派生的接口,这允许该控件充当 Outlook 的“选项”菜单中的一个选项卡。

添加自定义控件后,Unlocker 用户控件的实现使用标准的 .NET 行为与用户交互并在注册表上执行读/写功能;从而控制安全行为。

历史

  • 初始发布,2008 年 4 月

深入阅读

© . All rights reserved.