MAPI オブジェクトとプロパティのアクセス許可

適用対象: Outlook 2013 | Outlook 2016

アクセス許可、または許可可能な操作のセットは、MAPI オブジェクトの特性と、それらのオブジェクトでサポートされる個々のプロパティの特性である可能性があります。 オブジェクトのアクセスは、オブジェクトの親によって決定されます。 メッセージの場合、そのフォルダーによってアクセス許可が決定されます。 メッセージング ユーザーまたは配布リストの場合、そのアドレス帳コンテナーによってこの決定が行われます。 メッセージなどのオブジェクトが 2 つのフォルダーに存在する場合、オブジェクトの 2 つのコピーに対するアクセス許可が異なる場合があります。

これらのオブジェクトを使用するクライアントは、 IMAPISession::OpenEntry 呼び出しで MAPI_BEST_ACCESS フラグを設定することで、オブジェクトに対して許可される最高レベルのアクセスを要求できます。 オブジェクトを実装するサービス プロバイダーによっては、クライアントに必要なアクセス レベルが付与される場合と付与されない場合があります。 クライアントは、オブジェクト GetProps メソッドを呼び出して PR_ACCESS (PidTagAccess) プロパティを取得することで、付与されたアクセスのレベルを決定できます。 ただし、サービス プロバイダーはこのプロパティの値を動的に生成する必要があるため、クライアントは必要な場合にのみ取得することをお勧めします。

フォルダー、アドレス帳コンテナー、配布リストなどのコンテナーで変更を許可するかどうかを判断するには、 GetProps メソッドを呼び出して 、PR_ACCESS_LEVEL (PidTagAccessLevel) プロパティを取得します。 コンテナー レベルのアクセスは、ユーザー インターフェイスの表示方法に関してクライアントに影響します。 また、ユーザー インターフェイスの表示と一般的な実装の観点から、コンテナー内のオブジェクトの実装者にも影響します。

特定のプロパティへのアクセスは、 プロパティを所有するオブジェクトの MAPI によって設定されたプロパティ スキーマによって決まります。 プロパティ スキーマでは、オブジェクトに必要なプロパティと省略可能なプロパティのセットとそのアクセス許可を指定します。 オブジェクトの親によって決定されるオブジェクト アクセスとは異なり、プロパティ アクセスはグローバルです。 すべてのオブジェクトは、オブジェクトの親のアクセス要件に関係なく、スキーマによって決定されるプロパティに対して同じアクセス許可を持ちます。

プロパティが読み取り専用の場合は、 常に GetProps または OpenProperty 呼び出しで使用できます。 ただし、 プロパティをサポートするオブジェクトの実装によっては、プロパティを変更するための SetProps メソッドと削除するための DeleteProps メソッドの 2 つの結果が考えられます。

  • 失敗してMAPI_E_NO_ACCESSを返す

  • アクションを実行せず成功する

プロパティとオブジェクトのアクセスは、IMAPIProp インターフェイスから継承する IPropData インターフェイスを使用して取得または設定することもできます。 MAPI は、メモリ内のデータに基づく IPropData の実装を提供します。 サービス プロバイダーは 、IPropData を使用して、状態オブジェクトの場合や、トランザクションが組み込まれていないデータベースを使用している場合など、特定の状況で IMAPIProp を実装できます。 IPropData はメモリ内でのみ機能するため、データのロックとロック解除は不要です。

関連項目

MAPI のプロパティの概要