私の C# プログラムでは、最初に外部 VBS スクリプトを呼び出して、いくつかの Outlook 操作 (vCard を Outlook にインポートする) を実行しました。VBS を使用することの非優雅さと、バグを特定するのが難しいため、これをストレートな C# コードに変更することにしました。
まず、Microsoft Outlook 11.0 Object Library を使用しました。これは Windows 7 ではうまくいくように見えましたが、Windows XP で次のコード行を実行しようとすると、クラッシュしました: var outlook = new Microsoft.Office.Interop.Outlook.Application();
. 明らかに、Microsoft.Office.Interop.Outlook.dll および Office.dll ファイルが C# exe と共にユーザーのフォルダーにあることを確認しましたが、それは役に立ちませんでした。これは .NET 3.5 クライアント プロファイル アプリであることに注意してください。
そこで、11.0 ではなく 14.0 オブジェクト ライブラリを使用してみました (最初の PC に Outlook 2003 (バージョン 11) の代わりに Outlook 2010 がインストールされている別のコンピューターからバージョン 14 を取得しました)。MSOUTL.OLB を使用する代わりに、前述の 2 つの DLL を直接参照しました。XP でも動作するか、現在は完全に動作しているように見えます。
いくつかの質問:
1: Microsoft.Office.Interop.Outlook.dll と Office.dll を自分のプログラム (exe と同じフォルダー) と一緒に合法的に再配布できますか? また、再配布できる場合、圧縮以外にサイズを約 1.5 メガから減らす方法はありますか?
2: このルート (Microsoft Outlook 14.0 Object Library を使用) は安全で、おそらくエンド ユーザーの PC で VBS を使用するよりも安全ですか?
3: 副次的な質問: MSOUTL.OLB の参照 (つまり、参照時の COM メニュー) と、2 つの DLL (Microsoft.Office.Interop.Outlook.dll および Office.dll) の直接参照の違いは何ですか。どちらも同じ仕事をしているように見えます (以前の OLB はとにかく DLL を作成します)。