私がやろうとしているのは、新しい Outlook メール ウィンドウを開き、ユーザーが転送できるようにファイルを添付する winform クライアントに "Email To..." ボタンを追加することです。Outlook がまだ実行されていない場合は、Outlook の統合を正常に機能させることができます。これは、Windows 7 64 ビット マシンで実行されている Outlook 2010 32 ビットに対して、Outlook 14.0 相互運用ライブラリを使用する C# .NET 4.0 winforms アプリです。他の理由でアプリを既に 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 が実行されていない場合、問題なく動作します。開くと、Outlook.Application オブジェクトを作成しようとする最初の行で次のエラーが発生します。
次のエラーが原因で、CLSID {0006F03A-0000-0000-C000-000000000046} を持つコンポーネントの COM クラス ファクトリを取得できませんでした: 80080005 サーバーの実行に失敗しました (HRESULT からの例外: 0x80080005 (CO_E_SERVER_EXEC_FAILURE))。
これを引き起こす原因は何ですか?これは何らかのバージョンの競合ですか?