0

我正在编写一个程序,该程序需要打开 Microsoft Outlook 并在用户单击按钮时为其创建邮件项目。但是,当我这样做时,我收到以下错误:

由于以下错误,检索具有 CLSID {0006F03A-0000-0000-C000-000000000046} 的组件的 COM 类工厂失败:80080005 服务器执行失败(来自 HRESULT 的异常:0x80080005 (CO_E_SERVER_EXEC_FAILURE))。

在研究了这个错误后,我发现我的程序和 MS Outlook都必须以管理员或普通权限级别运行

所以这是我的问题......我如何使用与我当前正在运行的程序相同的权限级别通过 C# 代码打开 MS Outlook。我需要获取当前的权限级别,然后使用该权限级别打开 Outlook。到目前为止,我的研究没有运气。任何帮助表示赞赏!

这是我打开 MS Outlook 的代码(当前)以及我如何使用它:

// this will grab the current instance of outlook if it's running or make a new one
// however, it still doesn't have a way to open outlook with specific privileges...
//Application outlookApp = (Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Outlook.Application");
Application outlookApp = new Application();

MailItem mailItem = outlookApp.CreateItem(OlItemType.olMailItem);
mailItem.Subject = "Blah";
mailItem.HTMLBody= @"Various HTML stuff";

foreach (string documentPath in this.documentPaths)
{
    mailItem.Attachments.Add(documentPath, 1, 1, documentPath);
}

mailItem.Display(true);

编辑:更改了我的代码以显示我也在使用 Outlook 应用程序做什么。

4

1 回答 1

0

Outlook 是一个单例,因此如果它已经在运行,您将获得一个指向已运行实例的指针。

你的代码是做什么的?您可能需要考虑一个在进程内加载的库,因此不存在此问题。CDO 1.21(Outlook 不再默认安装)或Redemption都可以。

于 2013-09-30T14:44:47.770 回答