检测Outlook安装并动态加载INterop.Outlook

我在VS2010中有一个Windows窗体应用程序。 它引用了Interop.Outlook(2003)。 然后,我重新安装了Windows XP和VS2010,但没有安装Outlook。

现在,该项目没有编译。

我想这个,如果Outlook没有安装在我的程序执行的机器上,我的应用程序将无法工作。

我需要知道我是否检测到Outlook已安装,并动态加载Interop.Outlook.dll(用于在.NET 4中使用Outlook PIA或Embedded Interop类型)。

如果计算机安装了Outlook(2003,2007,2010,可能需要代码来检测版本并执行Outlook版本的兼容性),则应用程序可以正常运行Outlook。

如果计算机未安装Outlook,则应用程序可以正常运行而无需functionOutlook。

关于它的任何示例源代码或goog模式和实践?

要检测是否已安装Outlook,请查找“Outlook.Application”ProgID。

从安装程序中,在注册表中查找HKEY_CLASSES_ROOT\Outlook.Application

在运行时,您可以这样做:

 using System; using Microsoft.Office.Interop.Outlook; class Program { static void Main(string[] args) { var outlookType = Type.GetTypeFromProgID("Outlook.Application"); if (outlookType == null) { Console.WriteLine("Not installed."); } else { var app = Activator.CreateInstance(outlookType) as Application; Console.WriteLine(app.Name); } } } 

为避免动态加载互操作的问题,您应该为Microsoft.Office.Interop.Outlook.Interop.dll设置Embed Interop Types为true。

检查Installer API以检测Outlook的安装状态或使用此处描述的方法之一。