为绑定选择接口
绑定到目录对象时,调用方会指定所需 ADSI 接口的类型。 所有 ADSI 目录对象均支持 IADs 接口。 ADSI 对象还可支持其他接口。 对象支持的实际接口取决于对象的类。 例如,用户对象支持 IADsUser 接口,但不支持 IADsComputer 接口。
自动化客户端应使用 IADs* 接口,因为这些接口是可提供更高级别抽象并用 VARIANT 数据类型来提供数据的双接口。
除 IADs* 接口之外,C/C++ 客户端还可使用 IDirectoryObject 和 IDirectorySearch 接口。 这些接口并非双接口,且不支持自动化。 这些接口确实可更好地控制要检索和允许访问属性中存储的原始数据的属性。 例如,当使用 IADs::Get 方法来检索某一对象的 ntSecurityDescriptor 属性时,IADs::Get 方法可提供支持 IADsSecurityDescriptor 接口的 IDispatch 接口指针。 IADsSecurityDescriptor 接口由 ADSI 提供,以用于表示安全描述符。 相比之下,当使用 IDirectoryObject::GetObjectAttributes 方法检索 ntSecurityDescriptor 属性时,IDirectoryObject::GetObjectAttributes 提供了可强制转换为 SECURITY_DESCRIPTOR 结构的字节数组。 Win32 安全 API 可用于此数据来操作安全描述符。