ms-office – 如何连接到outlook 2010,而它在c#中运行?

我想要做的是将一个“Email To …”按钮添加到一个winform客户端,打开一个新的Outlook窗口,并附加一个文件,以便用户可以转发它.如果outlook尚未运行,我可以使outlook集成工作正常.这是一个C#.NET 4.0 winforms应用程序,使用Outlook 14.0互操作库,对Windows 2010 64位机器上运行的Outlook 2010 32位.我的应用程序已经编译到x86其他原因,所以我怀疑它的32/64位问题.这是我的代码:

// Connect to outlook and create a new mail item
var app = new Outlook.Application();
var ns = app.GetNamespace("MAPI");
var mailItem = (Outlook.MailItem)ns.Application.CreateItem(Outlook.OlItemType.olMailItem);

// create the mail item and attach the file
mailItem.To = "";
mailItem.Subject = "Emailing: " + Path.GetFileName(_currentFilePath);
mailItem.Attachments.Add(_currentFilePath, Outlook.OlAttachmentType.olEmbeddeditem);

// show the email dialog window
mailItem.Display(true);

如果展望没有运行,它的工作是完美无缺的.一旦它的打开,我得到以下错误在它的第一行尝试创建Outlook.Application对象:

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

任何想法会造成什么?这是某种版本的冲突吗?

最佳答案
这是由于进程的特权.我通常以管理员身份运行Visual studio,但是如果outlook以前没有以管理员身份启动,则COM调用将失败.

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

转载注明原文:ms-office – 如何连接到outlook 2010,而它在c#中运行? - 代码日志