目录服务技术介绍——ADSI(五)

由于目录对象的标识名可能在某些操作的影响下被改变,但目录对象的objectGUID属性永远不会改变,所以我们可以直接在LDAP路径中指定此GUID,客户程序直接绑定到此对象,下面的代码显示了这种用法:
IADs *pADs;
LPWSTR pszFilter = L"LDAP://MyServer/<GUID=63560110f7e1d111a6bfaaaf842b9cfa>";
hr = ADsGetObject( pszFilter, IID_IADs, (void**)&pADs);
等价的VB代码如下:
Dim myObject as IADs
Set myObject = GetObject("LDAP://<GUID=63560110f7e1d111a6bfaaaf842b9cfa>")
(2) 包容器对象的枚举操作。
客户程序通过上面的方法可以直接到达指定的目录对象或者包容器对象,我们也可以从某个节点开始访问目录子树,利用IADsContainer接口所提供的方法,我们可以实现枚举操作,举例如下:
Dim MyObject as IADs
Dim Child as IADs
Dim Container as IADsContainer

On Error Resume Next
Set MyObject = GetObject("LDAP://MyServer")
Set Container = MyObject
If Err = 0 Then
    For Each Child in Container
        Debug.Print Child.Name
    Next Child
EndIf
通过这种枚举操作,我们可以访问目录子树中的所有包容器对象和目录对象。
(3) 读取目录对象的属性。
读取对象属性最简单的方法莫过于直接通过对象的IADs::Get或者IADs::GetEx接口成员函数,比如:
Dim MyUser as IADs
Dim MyCommonName as String
set MyUser = GetObject("WinNT://MyServer/MyName")
MyCommonName = MyUser.Get("Fullname")
当然如果我们已经知道了目录对象的其它接口,也可以用更直接的方法访问属性,比如:
Dim MyUser as IADsUser
Dim MyName as String
Set MyUser = GetObject("WinNT://MyServer/MyName")
MyName = MyUser.Fullname
客户程序在访问目录对象时,通常ADSI已经为对象的属性作了缓存。当对象被创建时,其属性缓存为空,如果客户调用IADs::GetInfo从底层目录服务装载对象属性,那么它就会填满缓存,因为Get或者其它的Get_propertymethod函数都隐式调用了GetInfo函数,所以客户只要调用Get函数取一次属性值,以后的Get函数就直接从缓存中读取属性值。如果客户程序要刷新缓存中的属性值,可以显式调用IADs::GetInfo函数。使用缓存可以避免频繁地从服务器读取属性数据,从而降低网络负担。

时间: 2024-09-30 03:07:32

目录服务技术介绍——ADSI(五)的相关文章

目录服务技术介绍——ADSI(一)

目录服务技术介绍--ADSI潘爱民北京大学计算机科学技术研究所 (100871)[摘要]本文介绍了Microsoft提出的活动目录服务接口(ADSI)技术.文章首先讲述了ADSI的结构,然后介绍了ADSI的程序设计方法,最后通过例子简单说明了ADSI的用法.一.ADSI简介ADSI (Active Directory Services Interface)是Microsoft新推出的一项技术,它统一了许多底层服务的编程接口,程序员可以使用一致的对象技术来访问这些底层服务.ADSI把这些服务的公共

目录服务技术介绍——ADSI(二)

下面列出目前已经实现的ADSI目录服务:(1)    Windows NT域用户管理.(2)    LDAP (Exchange Server)目录服务.(3)    Internet Information Server(4)    NDS(Novell NetWare Directory Services)目前,在一个企业内部存在多个目录服务也会带来一些问题.对于管理员来说,它必须管理多个目录服务,这使得管理更为复杂:对于企业工作人员来说,为了访问不同目录服务中的信息,他必须登录到多个目录服

目录服务技术介绍——ADSI(六)

客户程序也可以利用IADsClass.IADsProperty和IADsSyntax接口在运行时刻确定目录对象的详细属性信息.操作步骤如下:  a.    先绑定到目录对象的表结构对象,可以直接访问目录对象的"schema"属性. b.    用枚举的办法从表结构对象中找到强制属性或者可选属性,如果客户知道要访问的属性名则可以跳过这一步. c.    绑定到表结构对象的包容器对象. d.    从表结构对象的包容器对象获得属性的定义对象. e.    从属性定义对象获取属性信息,包括属

目录服务技术介绍——ADSI(四)

从类别到对象,它可以指定属性,那么目录对象的属性如何被指定呢?ADSI通过接口IADsProperty进行描述,IADsProperty接口的属性和方法如表6所示. 表6 IADsProperty接口的属性 属性名类型说明 OIDBSTR唯一的对象标识符 SyntaxBSTR语法路径 MaxRangelong对于多值属性,最大属性数 MinRangeLong对于多值属性,最小属性数 MultiValuedVARIANT_BOOL多值属性标志 最后一个重要接口为IADsSyntax,它只有一个属性

目录服务技术介绍——ADSI(七)

了解了客户程序的编程方法以及ADSI提供者的基本内容之后,现在我们来看看从客户程序到ADSI提供者组件的交互过程(如图4所示),以便加深读者对ADSI的理解.图4 客户程序与ADSI提供者的交互过程客户程序首先向ADSI发一个对象绑定请求(图中步骤1),ADSI组件根据客户给出的ADSI对象路径,提取出标识提供者ProgID的字符串,比如"WinNT"."LDAP"或者自定义的提供者ProgID,进一步在注册表中找到此ProgID所对应的CLSID(图中步骤2).然

目录服务技术介绍——ADSI(三)

表1 IADs接口的属性属性名 类型 说明 Name BSTR 对象名字 AdsPath BSTR 对象的全路径 Class BSTR 对象的类别(表结构对象的路径) GUID BSTR 对象的全局唯一标识(GUID) Parent BSTR 父包容器的路径 Schema BSTR 表结构对象的路径 表2 IADs接口的方法方法名 参数 说明 GetInfo 用属性值重新装入对象 SetInfo 提交属性值的变化 Get BSTR bstrName,VARIANT *pvProp 获取指定名字的

(转) SLAM系统的研究点介绍 与 Kinect视觉SLAM技术介绍

      首页 视界智尚 算法技术 每日技术 来打我呀 注册     SLAM系统的研究点介绍          本文主要谈谈SLAM中的各个研究点,为研究生们(应该是博客的多数读者吧)作一个提纲挈领的摘要.然后,我们再就各个小问题,讲讲经典的算法与分类. 1. 前言         在<SLAM for Dummy>中,有一句话说的好:"SLAM并不是一种算法,而是一个概念.(SLAM is more like a concept than a single algorithm.

JSF技术介绍

与微软Visual Studio.NET程序开发有可视化工具的支持相比,人们在开发基于Java的Web用户界面时仍然需要手工书写大量的标签,同时还要考虑页面状态信息的保存.客户端事件处理等问题,开发难度比较大,效率较低,重用性差.Java Server Faces(JSF)技术正是为了解决这一问题应运而生的,其最引人注目的特性之一是它与标记语言.协议.客户端设备无关.利用JSF提供的可重用.可扩展.基于组件的用户界面框架,在快速开发工具RAD的支持下实现可视化开发.现在JSF技术已经得到了许多大

实时系统解决方案 TIBCO Rendezvous — 技术介绍(消息中间件|基于数据库的主动推送)

TIBCO Rendezvous - 技术介绍 1.1.1. TIBCO Rendezvous - 技术介绍 TIBCO Rendezvous(或称为TIBCO RV)产品是一种中间件,它具有发布/订阅(Publish/Subscribe).基于主题寻址(Subject-Based Addressing) 和自定义数据信息(Self-Describing Data Messages)等专利技术功能,使不同应用平台上的信息在一个共享的虚拟总线Information Bus(TIB)上进行传输交换.