枚举林中的应用程序目录分区

与域分区一样,每个应用程序目录分区都由配置分区的“分区”容器中的 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 标志。 这要求通过 nCName 特性的内容来区分这两个 crossRef 对象。 表示“架构”容器的 crossRef 对象的 nCName 特性将与 RootDSE 对象的 schemaNamingContext 特性相同。 同样,表示“配置”容器的 crossRef 对象的 nCName 特性将与 RootDSE 对象的 configurationNamingContext 特性相同

若要标识林中的所有应用程序目录分区,请执行以下步骤

  1. 在配置分区的“分区”容器中,搜索或枚举所有 crossRef 对象
  2. 如果 crossRef 对象在 systemFlags 属性值中没有设置 ADS_SYSTEMFLAG_CR_NTDS_NC 标志,或设置了 ADS_SYSTEMFLAG_CR_NTDS_DOMAIN 标志,则从结果集中排除该对象
  3. 通过将 crossRef 对象的 nCName 特性与 RootDSE 对象的 schemaNamingContext 特性进行比较,从结果集中排除“架构”分区
  4. 通过将 crossRef 对象的 nCName 特性与 RootDSE 对象的 configurationNamingContext 特性进行比较,从结果集中排除“配置”分区
  5. 结果集中剩余的 crossRef 对象都表示应用程序目录分区