Free for personal and educational use.
Introduction
By default Microsoft Outlook is configured to block specific file attachments based on file extensions. This is useful in most scenarios to prevent the spread of email viruses and to keep your pc secure. However sometimes you may want to override this behaviour in order to open attachments from known sources which are otherwise inaccessible. For a list of blocked file extensions see here.
For some reason the standard edition of Microsoft Outlook does not allow users to configure or disable these security settings, though it is possible to control behaviour by tweaking the registry.
The .Net forms application included in this article is an example application built on the Automation and Extensibility
framework, which allows the registry settings to be controlled via an Outlook add-in. This adds an additional
tab to the Options menu of Outlook and allows security settings to be adjusted for custom behaviour.
Background
The attachment security features within Microsoft Outlook are controlled via two string
registry keys, Level1Add and Level1Remove. These keys can be added at the
following location, and allow the default behaviour for blocking attachments to be overridden.
Note: 10.0 will vary depending on the version installed
HKEY_CURRENT_USER\Software\Microsoft\Office\10.0\Outlook\Security
When added, each key represents a list of semi-colon separated file extensions to either block (Level1Add) or unblock (Level1Remove). Security can be further customised with further keys for level2 security settings, however this is beyond the scope of this article.
Outlook Unlocker
The OutlookUnlocker add-in is installed by running the Setup.exe. This
adds an Attachment Unlocker tab to the Options menu within Outlook, which
can be accessed via the tools menu. Enter extensions to be blocked or unblocked into the blocked/unblocked
lists accordingly. Do this by typing text into the relevant input box and pressing Enter.
Once the extension is added it can be moved to the blocked or unblock lists by highlighting the
item and using the < and > arrows. Items can be removed from blocked
and unblocked lists by highlighting an item and using the X button. Extensions not listed
revert to the default Outlook behaviour for those extension types. You will need to restart Outlook
for changes to take effect.
How it works
The solution was built on top of the Automation and Extensibility framework using
the Visual Studio Shared Add-in project template for .Net. This creates an add-in template
project, as well an installation project for installing the add-in.
In brief the extensibility framework allows managed .Net assemblies to communicate with unmanaged Com
code via proxy (shim) objects. This allows IDE's such as Outlook to raise events which the add-ins can respond to
in order to integrate with the application; such as when they are loaded or unloaded. The interface IDTExtensibility2
is commonly used for this purpose to hook into the application events.
The Outlook Unlocker solution consists of a class named Connect. This is the implementation of the
IDTExtensibility2 interface created by the project template. In order to hook an additional tab to the Options menu we
must register for the OptionsPagesAdd event as follows during the OnConnection event:
// 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");
}
When the OptionsPagesAdd event is fired, the custom usercontrol named Unlocker is added to the
Pages collection. The control implements an interface derived from a reference to the
Microsoft.Office.Interop.Outlook assembly, which allows the control to act as a tab within the
Options menu of Outlook.
With the custom control added, the implementation of the Unlocker usercontrol uses standard .Net behaviour to
interact with the user and perform read/write functionality on the registry; thus controlling the security behaviour.
History
- Initial release, April 2008
No comments:
Post a Comment