12

私がやろうとしているのは、新しい 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))。

これを引き起こす原因は何ですか?これは何らかのバージョンの競合ですか?

4

2 に答える 2

19

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

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

于 2012-02-14T14:59:13.253 に答える
1

私も同じ問題を抱えていました。これはセキュリティの問題です。Outlook を管理者として実行する場合 (Shift 右クリック)。問題はもうありません。ユーザーアカウント制御の設定を無効にすると解決する場合があります。

于 2011-12-06T19:09:55.100 に答える