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

时间:2010-12-12 10:18:33

标签: c# interop assemblies outlook version

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

现在,项目没有编译。

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

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

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

如果计算机未安装Outlook,则应用程序无法正常运行Outlook。

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

2 个答案:

答案 0 :(得分:2)

要检测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);
        }
    }
}

为了避免动态加载互操作的问题,您应该为Embed Interop Types

Microsoft.Office.Interop.Outlook.Interop.dll设置为true

答案 1 :(得分:0)

检查安装程序API以检测Outlook的安装状态或使用所述方法之一here