フォレストでアプリケーション ディレクトリ パーティションを列挙する
ドメイン パーティションと同様、すべてのアプリケーション ディレクトリ パーティションが、構成パーティションのパーティション コンテナー内の crossRef オブジェクトによって表されます。 各 crossRef オブジェクトには、対応するパーティションに関するデータが格納されます。
ドメイン パーティションを表す crossRef オブジェクトは、systemFlags 属性のコンテンツによって、アプリケーション ディレクトリ パーティションを表す crossRef オブジェクトとは区別されます。 ドメイン パーティションを表す crossRef オブジェクトの場合、systemFlags 属性に ADS_SYSTEMFLAG_CR_NTDS_NC フラグと ADS_SYSTEMFLAG_CR_NTDS_DOMAIN フラグの両方が設定されます。 アプリケーション ディレクトリ パーティションを表す crossRef オブジェクトの場合、systemFlags 属性には ADS_SYSTEMFLAG_CR_NTDS_NC フラグが設定され、ADS_SYSTEMFLAG_CR_NTDS_DOMAIN フラグは設定されません。
スキーマおよび構成パーティションを表す crossRef オブジェクトの場合も、systemFlags 属性に ADS_SYSTEMFLAG_CR_NTDS_NC フラグが設定され、ADS_SYSTEMFLAG_CR_NTDS_DOMAIN フラグは設定されません。 このため、これら 2 つの crossRef オブジェクトを nCName 属性のコンテンツによって区別する必要があります。 スキーマ コンテナーを表す crossRef オブジェクトの nCName 属性は、RootDSE オブジェクトの schemaNamingContext 属性と同じになります。 同様に、構成コンテナーを表す crossRef オブジェクトの nCName 属性は、RootDSE オブジェクトの configurationNamingContext 属性と同じになります。
フォレスト内のすべてのアプリケーション ディレクトリ パーティションを識別するには、次の手順を実行します
- 構成パーティションのパーティション コンテナーで、すべての crossRef オブジェクトを検索または列挙します。
- crossRef オブジェクトで systemFlags 属性値に ADS_SYSTEMFLAG_CR_NTDS_NC フラグが設定されていない場合、または ADS_SYSTEMFLAG_CR_NTDS_DOMAIN フラグが設定されている場合は、結果セットからそのオブジェクトを除外します。
- 結果セットからスキーマ パーティションを除外するには、crossRef オブジェクトの nCName 属性を RootDSE オブジェクトの schemaNamingContext 属性と比較します。
- 結果セットから構成パーティションを除外するには、crossRef オブジェクトの nCName 属性を RootDSE オブジェクトの configurationNamingContext 属性と比較します。
- 結果セット内の残りの crossRef オブジェクトはすべて、アプリケーション ディレクトリ パーティションを表します。