ADSI を使用したデータへのアクセスと操作

すべてのオブジェクトにはプロパティがあります。 すべての Active Directory サービス インターフェイス (ADSI) COM オブジェクトには、COM オブジェクトが表すディレクトリ オブジェクトのプロパティを取得するメソッドを持つ 1 つ以上のインターフェイスがあります。 オブジェクトからプロパティを読み取る方法はいくつかあります。

  • IADs インターフェイスには、特定のプロパティを読み取るための IADs::GetIADs::GetEx の 2 つのメソッドがあります。 すべての ADSI COM オブジェクトには IAD インターフェイスがあります。
  • プロパティの指定されたリストを取得します。IDirectoryObject インターフェイスには IDirectoryObject::GetObjectAttributes メソッドがあり、読み込むプロパティの名前を含むリストを指定でき、要求されたプロパティ値を含む構造体の配列を返します。
  • オブジェクトのすべてのプロパティを列挙します。IADsPropertyList インターフェイスを使用すると、オブジェクトのすべてのプロパティを列挙できます。
  • 特殊なプロパティを取得します。オートメーション インターフェイス (IADs*) には、オブジェクトに格納されていない特別なプロパティを取得できるプロパティ メソッドがあります。 または、プロパティ メソッドを使用すると、格納されている実際のデータ型とは異なるデータ形式のオブジェクト プロパティを取得できます。 たとえば、IADs インターフェイスには、オブジェクトの相対識別名 (RDN) を取得する IADs::get_Name、オブジェクトのクラスを取得する IADs::get_Class、オブジェクトの親への ADSPath を取得する IADs::get_Parent などのプロパティ メソッドがあります。

ADSI を使用すると、プロパティをディレクトリ サーバーから読み取った後にローカルにキャッシュできます。 これにより、ローカル プロパティ キャッシュからプロパティを読み取るか、ディレクトリ サーバーから直接プロパティを取得するかを選択できます。 ADSI には、キャッシュを更新するメソッドと、オブジェクトのすべてのプロパティをキャッシュするか、指定したプロパティだけをキャッシュするかを指定する方法もあります。

プロパティを取得すると、その値が読み取られます。 プロパティのデータ型は、Active Directory スキーマのプロパティ (別名: 属性) の定義によって異なります。 Active Directory に存在できるプロパティの種類ごとに、Active Directory スキーマに attributeSchema オブジェクトがあります。 attributeSchema オブジェクトは、属性の特性を定義します。 これらの特性の 1 つは、属性の値のデータ型を決定する属性の構文です。 詳しくは、「属性の特徴」「Active Directory 属性の構文」を参照してください。

オートメーション インターフェース (IADs*) は、プロパティ値を VARIANT として、またはプロパティを表す COM オブジェクト上のオートメーション インターフェイスへのポインターとして返します。 IDirectoryObject インターフェイスと IDirectorySearch インターフェイスは、型付けされたプロパティ値を含む構造体へのポインター、またはバイト列へのポインターとしてプロパティを返します。 さらに、IDirectoryObjectIDirectorySearch は、ローカル プロパティ キャッシュを使用する代わりに、ディレクトリ サーバーから直接プロパティを取得します。

このセクションでは、次のトピックについて説明します: