在Outlook 2010上访问电子邮件时获取COMException

时间:2013-02-11 09:29:13

标签: c# visual-studio-2010 email comexception

您好我正在尝试通过C#控制台应用程序访问Outlook 2010中的电子邮件。

Visual Studio以管理员权限启动,我添加了对Microsoft.Office.Interop.Outlook v14.0.0.0的引用并将其用作Outlook。

我的代码:

Console.Write("starting");
Outlook.Application app = new Outlook.Application();
Outlook.NameSpace mapiNameSpace = app.GetNamespace("MAPI");
Outlook.MAPIFolder myInbox = mapiNameSpace.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox);
Console.WriteLine(((Outlook.MailItem)myInbox.Items[0]).Subject);
Console.WriteLine("readline:");
Console.ReadLine();

第二行抛出错误信息:

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)).

你知道任何解决方案吗?

3 个答案:

答案 0 :(得分:7)

这是因为进程的权限。请以管理员身份运行Visual studio和outlook。

简单的解决方案。以管理员身份运行或以普通权限级别运行。

此致 Rameez Ali

答案 1 :(得分:5)

尝试阅读以下内容:http://support.microsoft.com/kb/870655

  

原因:
  如果许多COM +应用程序在不同的用户帐户下运行   在“此用户”属性中指定的,计算机不能   分配内存为新用户创建新的桌面堆。   因此,这个过程无法启动。

     

替代方法:   要解决此问题,请修改该值   以下注册表子项:   HKEY_LOCAL_MACHINE \系统\ CurrentControlSet \控制\会话   管理器\子系统\视窗

答案 2 :(得分:0)

以下步骤可能会有所帮助......

HKEY_LOCAL_MACHINE \ System \ CurrentControlSet \ Control \ Session Manager \ SubSystems - Windows

%SystemRoot%\ system32 \ csrss.exe ObjectDirectory = \ Windows SharedSection = 1024,3072,512 Windows = On SubSystemType = Windows ServerDll = basesrv,1 ServerDll = winsrv:UserServerDllInitialization,3 ServerDll = winsrv:ConServerDllInitialization,2 ProfileControl =关闭MaxRequestThreads = 16

ASP.net用户必须在管理工具/计算机管​​理/用户

上激动

对于32位(x86),创建此文件夹: C:\ WINDOWS \ system32 \设置\ systemprofile \桌面 - >添加网络服务

Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ Temporary ASP.NET Files提供写入权限。

在Web.config中

改变impersonate = true,

在IIS for Windows Server 2003中选择该帐户作为NETWORK SERVICE。

在DCOMCONFIG中将身份更改为交互式用户。

也为特定目录提供所有权利。


Internet选项 - “高级”选项卡。一直滚动到底部并取消选中名为“检查发布者证书吊销。”的项目。

注册表: CLSID:{0006F03A-0000-0000-C000-000000000046} 在HKEY_CLASSES_ROOT \ CLSID \中的此键下,添加字符串值AppID =与ID相同的值例如:{0006F03A-0000-0000-C000-000000000046}

然后在HKEY_CLASSES_ROOT \ AppID \下添加一个字符串值:RunAs = Interactive User

右键点击CLSID& APPID,权限,安全性和编辑启动和安装;访问权限以添加和提供网络服务和交互式完整权限。


禁用所有其他Outlook加载项:Outlook工具菜单|选项|其他标签|高级选项| COM加载项|取消选中项目。如果这样可以解决问题,则一次重新启用一个加载项,直到问题再次出现


为文件夹“C:\ WINDOWS \ TEMP”提供对IIS用户的读/写访问权限 所有Dll应放在C:\ Program Files \ Microsoft Visual Studio 9.0 \ Visual Studio Tools for Office \ PIA \ Office12