使用 ADSI 访问和操作数据

所有对象都具有属性。 所有 Active Directory 服务接口 (ADSI) COM 对象都具有一个或多个接口,这些接口具有一个或多个用于检索 COM 对象所表示的目录对象的属性的方法。 可以通过多种方式从对象中读取属性:

  • 按名称获取特定属性:IADs 接口具有两种方法 IADs::GetIADs::GetEx 来读取特定属性。 每个 ADSI COM 对象都有一个 IAD 接口
  • 获取指定的属性列表:IDirectoryObject 接口具有方法 IDirectoryObject::GetObjectAttributes,该方法允许指定包含要读取的属性名称的列表,并返回包含所请求属性值的结构数组。
  • 枚举对象上的所有属性: IADsPropertyList 接口允许枚举对象上的所有属性。
  • 获取特殊属性:自动化接口(IADs*)具有属性方法,可用于获取未存储在对象中的特殊属性。 或者,属性方法可能允许以与存储的实际数据类型不同的数据格式获取对象属性。 例如,IADs 接口具有属性方法,例如 IADs::get_Name,用于检索对象的相对可分辨名称(RDN): 检索对象的类的 IADs::get_Class以及检索对象的父级的 ADsPath 的 IADs::get_Parent

ADSI 允许在从目录服务器读取属性后在本地缓存属性。 这允许你选择从本地属性缓存读取属性,或直接从目录服务器检索属性。 ADSI 还具有更新缓存的方法,并指定是缓存对象的所有属性还是只缓存那些属性。

检索属性后,将读取其值。 属性的数据类型取决于 Active Directory 架构中属性(也称为属性)的定义。 对于 Active Directory 中可以存在的每种属性类型,Active Directory 架构中有一个 attributeSchema 对象。 attributeSchema 对象定义特性的特征。 其中一个特征是属性的语法,用于确定特性的值的数据类型。 有关详细信息,请参阅 Active Directory 属性的属性和语法的特征。

自动化接口 (IADs*) 将属性值作为 VARIANT 或指向表示该属性的 COM 对象上的自动化接口的指针返回。 IDirectoryObjectIDirectorySearch 接口将属性作为指向包含类型化属性值的结构或指向字节字符串的指针返回的属性。 此外, IDirectoryObjectIDirectorySearch 直接从目录服务器检索属性,而不是使用本地属性缓存。

本部分介绍以下主题: