12

私がしようとしているのは、新しいOutlookメールウィンドウを開き、ユーザーがそれを転送できるようにファイルを添付するwinformクライアントに "Email To ..."ボタンを追加することです。私はOutlookがすでに実行されていない場合、Outlook統合をうまく機能させることができます。これは、Windows 7の64ビットマシンで動作するOutlook 2010の32ビットに対して、Outlook 14.0 interopライブラリを使用するC#.NET 4.0 winformsアプリケーションです。私はアプリが既に他の理由でx86にコンパイルされているので、その32/64ビットの問題は疑わしい。ここに私のコードです:どのようにC#で実行中にOutlook 2010に接続するには?

// 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が実行されていない場合、それは完璧に動作します。その開いたら、私はそれが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)).

任意のアイデアこれを引き起こすだろうか?これは何らかのバージョンの競合ですか?

+3

あなたはJahmicsの回答を受け入れるべきです、それは正しいです。 – flayn

答えて

1

私は同じ問題を抱えていました。セキュリティの問題です。 Outlookを管理者として実行すると(Shift Right Click)。問題はもはや存在しない。ユーザーアカウント制御の設定を無効にすると、それが解決される可能性があります。

19

これはプロセスの特権によるものです。私は通常、管理者としてVisual Studioを実行しますが、Outlookが管理者として以前に起動されていない場合、COM呼び出しは失敗します。

シンプルなソリューション。 管理者として実行するか、両方を通常の特権レベルとして実行します。

+1

オハイオ州の男はこれが私をクレイジーから救った... – stt106

関連する問題