35

我有一个应用程序调用

Email hello = new Email(appropriate constructor);
hello.Email_Send();

我收到异常:

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

System.Runtime.InteropServices.COMException.

using O = Microsoft.Office.Interop.Outlook;    
class Email
{
    public void Email_Send()
    {
        O.Application outlook = new O.Application(); //Exception thrown here.
        O.MailItem message = outlook.CreateItem(O.OlItemType.olMailItem);
        message.To = Receiver;
        message.CC = Sender;
        message.Subject = Subject;
        message.Body = "This is an automated message sent at " + DateTime.Now.ToString("HH:mm:ss") + " about " + Body_Topic + System.Environment.NewLine + Body_Content ;
        message.Send();
    }
}

这个错误以前从未发生过,我知道的代码也没有变化。http://support.microsoft.com/kb/825118似乎不符合我的症状 - 我的电脑没有停止响应等。任何诊断问题的帮助将不胜感激!

4

4 回答 4

92

此错误是由以管理员身份运行的 Visual Studio 引起的。Outlook 不允许不同的用户访问同一个邮箱(我在桌面上打开了 Outlook 应用程序)。即使我对我的域用户具有本地管理员访问权限,以管理员身份运行 VS 也必须将进程关联到不同的用户对象?不完全确定这是如何工作的,但是......已解决。

于 2012-10-13T19:24:37.373 回答
5

我遇到了同样的问题,如前所述:如果 Visual Studio 以管理员身份运行,则 Outlook 会阻止另一个具有不同用户的实例。我的 VS 解决方案正在启动几个项目,我需要它以管理员身份运行,所以我所做的是在调试时以管理员身份运行 Outlook。这解决了我的问题。

于 2017-07-31T21:27:59.830 回答
0

发布其中一条评论作为答案。

当我们关闭 Outlook 的运行实例时,它就像一个魅力。

在我的情况下,我在带有特殊安全软件的虚拟机下运行。在我的开发人员桌面上,当 Outlook 打开时它运行良好。

但是在我的安全虚拟机中,我必须关闭前景才能使其正常工作。这很可能是由于我们的安全软件造成的。

当 Outlook 保持运行时:Unhandled Exception: System.Runtime.InteropServices.COMException: Retrieving the COM class factory for component with CLSID {0006F03A-0000-0000-C000-000000000046} failed due to the following error: 80080005 Server execution failed (Exception from HRESULT: 0x80080005 (CO_E_SERVER_EXEC_FAILURE)).

当它不运行时,它工作正常。

于 2021-04-02T15:46:50.260 回答
-1

接受的答案并不完全准确。实际上,如果调用应用程序没有与原始进程相同的访问级别,COM 将失败。两者都需要处于相同的访问级别。

因此,如果 Outlook 以管理员身份启动,并且在 Visual Studio 中调试的程序也是管理员,那么它将工作。

反之亦然:如果 Outlook 不是以管理员身份启动的,那么在 Visual Studio 中调试的程序也需要是非管理员的。

此外,如果不包含COMReferenceto ,您也可以收到此消息Microsoft.Office.Core

于 2021-11-30T06:36:20.683 回答