枚举林中的应用程序目录分区
与域分区一样,每个应用程序目录分区都由配置分区的“分区”容器中的 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 特性相同。
若要标识林中的所有应用程序目录分区,请执行以下步骤
- 在配置分区的“分区”容器中,搜索或枚举所有 crossRef 对象。
- 如果 crossRef 对象在 systemFlags 属性值中没有设置 ADS_SYSTEMFLAG_CR_NTDS_NC 标志,或设置了 ADS_SYSTEMFLAG_CR_NTDS_DOMAIN 标志,则从结果集中排除该对象。
- 通过将 crossRef 对象的 nCName 特性与 RootDSE 对象的 schemaNamingContext 特性进行比较,从结果集中排除“架构”分区。
- 通过将 crossRef 对象的 nCName 特性与 RootDSE 对象的 configurationNamingContext 特性进行比较,从结果集中排除“配置”分区。
- 结果集中剩余的 crossRef 对象都表示应用程序目录分区。