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

C# 在Outlook 2010上访问电子邮件时获取COMException,c#,visual-studio-2010,email,comexception,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.

您好,我正在尝试通过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)).

您知道任何解决方案吗?

请尝试阅读以下内容:

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

解决方法: 若要解决此问题,请修改 以下注册表子项: HKEY\U LOCAL\U MACHINE\System\CurrentControlSet\Control\Session 管理器\子系统\窗口


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

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

问候
拉梅兹·阿里

以下步骤可能会有所帮助

HKEY\U LOCAL\U MACHINE\System\CurrentControlSet\Control\Session Manager\Subsystem-Windows

%SystemRoot%\system32\csrss.exe ObjectDirectory=\Windows SharedSection=10243072512 Windows=On SubSystemType=Windows ServerDll=basesrv,1 ServerDll=winsrv:userserverdllinitation,3 ServerDll=winsrv:servaterdlinitialization,2 ProfileControl=Off MaxRequestThreads=16

ASP.net用户必须是管理员工具/计算机管理/用户方面的专家


对于32位(x86),请创建以下文件夹: C:\Windows\System32\config\systemprofile\Desktop-->添加网络服务

Windows\Microsoft.NET\Framework\v2.0.50727\临时ASP.NET文件授予写入权限。 在Web.config中 change-impersonate=true

在IIS for windows server 2003中,选择帐户作为网络服务

在DCOMCONFIG中,更改交互用户的身份

还为特定目录授予所有权限


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

注册处: CLSID:{0006F03A-0000-0000-C000-0000000000 46} 在HKEY_CLASSES_ROOT\CLSID\中的该键下,添加一个字符串值AppID=与ID相同的值,例如:{0006F03A-0000-0000-C000-0000000000 46}

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

右键单击CLSID和APPID、权限、安全性,并编辑启动和访问权限,以添加和授予网络服务和交互式完全权限


禁用所有其他Outlook加载项:Outlook工具菜单|选项|其他选项卡|高级选项| COM加载项|取消选中项目。如果这解决了问题,请一次重新启用一个外接程序,直到问题再次出现


为IIS用户授予文件夹“C:\WINDOWS\TEMP”的读/写权限
所有Dll都应放在C:\Program Files\Microsoft Visual Studio 9.0\Visual Studio Tools for Office\PIA\Office12上。请尝试阅读以下内容:我仍然收到相同的错误。我应该在更改注册表项后重新启动吗?如果Outlook实例未运行,我现在可以创建一个新的Outlook应用程序。我启动Visual Studio时没有管理员权限。是的,我现在可以创建Outlook实例,可能是注册表项影响了异常。非常有用的答案。你能在注册表项中添加相关的更改以防链接中断吗?我有一个相关的情况。我确认使用相同的权限模型(管理员或普通)运行visual studio(或应用程序)和outlook可以修复此问题。但是,我没有在注册表中测试解决方法。(使用Outlook 2016进行测试)文章说要添加512,但我的设置为768:
ObjectDirectory=\Windows SharedSection=102420480768
。我注意到ServerDll被设置为sxsrv:
ServerDll=sxsrv
。我假定这是注册表中的默认配置,因为我没有更改它。我想知道512到底是什么?这比在注册表上捣乱要好得多。