MapiSvc.inf でのサービスとサービス プロバイダーの登録
適用対象: Outlook 2013 | Outlook 2016
システムに新しいプロバイダーをインストールするには、新しいプロバイダーを指す MapiSvc.inf ファイルを更新する必要があります。 次を含む構成時に設定された標準プロパティは、プロバイダーのダイナミック リンク ライブラリを検索する場所 (.dll) を MAPI に通知します。
PR_SERVICE_DLL_NAMEは[メッセージサービス]セクションで指定します。
PR_PROVIDER_DLL_NAMEは[サービス プロバイダー] セクションで指定します。
注:
プロバイダーの .dll の名前 (サフィックス "32" なし) を設定することが想定されます。 MAPI は、パスでプロバイダーを探して読み込みます。
MapiSvc.inf にパスを配置する
ほとんどのアプリケーションは、プログラム ファイルの下にインストールされ、MAPI プロバイダーが動作できるようにするためにパス変数の更新が必要です。 いくつかの制限Microsoft Outlook 2010と Outlook 2013 では、MAPI プロバイダーへの完全なパスに対応できます。
MapiSvc.inf でプロバイダーを登録する場合は、MAPI プロパティのプロバイダーへの完全なパスを PR_SERVICE_DLL_NAME して PR_PROVIDER_DLL_NAMEできます。
MAPI はファイルを探す前にファイル名に追加し続けるので、どちらのプロパティでも、完全なパスにサフィックス "32" を付けない必要があります。 つまり、パス "c:\mypath\myprovider.dll" を登録すると、MAPI は "c:\mypath\myprovider32.dll" の読み込みを試みます。
Outlook の MAPI は、もともと完全なパスに対応するように設計されていないため、文字列内の最初のピリオドを探すことで "32" サフィックスを挿入します。つまり、他のピリオドを含むパスは機能しないため、"c:\my.path\myprovider.dll" や "c:\mypath\my.provider.dll" などのパスを使用することはできません。
ストア プロバイダーでは、 WrapStoreEntryID 関数を使用してエントリ識別子を生成することがあります。これは、プロバイダーの名前をパラメーターとして受け取ります。
重要
MapiSvc.inf で完全なパスを使用している場合は、 WrapStoreEntryID の呼び出しで同じパスを使用する必要があります。
さらに、使用するパスは 、GetACP 関数によって提供されるコード ページを使用して Unicode との間で変換できます。
注意
MultiByteToWideChar 関数と WideCharToMultiByte 関数を介してこのようなラウンドトリップを存続できない文字を含むパスを選択すると、エラーが発生します。
この機能のデモでは、GitHub の ラップされた PST サンプル が改訂されました。関連する機能は MergeWithMapiSvc と GenerateProviderPath にあります。