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

从类别到对象,它可以指定属性,那么目录对象的属性如何被指定呢?ADSI通过接口IADsProperty进行描述,IADsProperty接口的属性和方法如表6所示。

表6 IADsProperty接口的属性

属性名
类型
说明

OID
BSTR
唯一的对象标识符

Syntax
BSTR
语法路径

MaxRange
long
对于多值属性,最大属性数

MinRange
Long
对于多值属性,最小属性数

MultiValued
VARIANT_BOOL
多值属性标志

最后一个重要接口为IADsSyntax,它只有一个属性,如表7所示。

表7 IADsSyntax接口的属性

属性名
类型
说明

OleAutoDataType
long
代表此语法的自动化数据类型

ADSI定义了许多接口,上面介绍的只是ADSI的基本接口,从这些接口我们可以看到,ADSI用表结构的方式描述目录对象的属性,这种方式可扩展性很强。目录对象本身是个抽象概念,它可以包含许多与应用有关的属性,ADSI目录服务提供者可以利用表结构描述这些属性,以便客户程序可以对目录对象进行有效的访问。

ADSI还定义了一些常用的目录对象使用的接口,比如IADsUser、IADsO、IADsComputer、IADsGroup、IADsOU、IADsDomain、IADsService,它们分别代表了用户、组织、计算机、用户组、部门、域、系统服务。

除了使用以上介绍的ADSI接口访问ADSI目录服务之外,客户程序也可以使用ADO的标准接口访问目录服务,它可以利用ADO的记录集对象访问ADSI的包容器,对包容器对象进行枚举或者检索。ADO与ADSI的关系如图3所示。

图3 客户程序访问ADSI目录服务的两种方法

三、ADSI编程模型

了解了ADSI的基本结构之后,现在我们再讨论ADSI的编程模型。首先,我们介绍目录对象的路径表示法,通常我们使用URL路径表示法,如下:

<Namespace>:

或者 <Namespace>://<Provider-specific stuff>

如果我们不知道名字空间的符号表示,可以从ADSI的最基础的根“ADS:”开始,比如,我们在NT 4.0下对“ADS:”进行枚举可以得到以下5个名字空间:

IIS

LDAP:

NDS:

NWCOMPAT:

WinNT:

如果我们要用ADSI访问NT用户信息,可以使用下面格式的路径:

WinNT://<domain_name>/<User_Name>

如果我们要用ADSI访问Microsoft Exchange Server的用户信息,可以使用下面格式的路径:

LDAP://<Server_Name>/cn=<User_Name>,cn=Recipients,ou=<Site_Name>,o=<Organization_Name>

这表示在<Organization_Name>组织下的<Site_Name>站点中的帐户<User_Name>,<Server_Name>为此站点的一个服务器,它提供LDAP服务。

下面我们讨论几个基本的编程问题:

(1) 绑定到路径指定的对象。

客户程序可以利用以下的方法绑定到路径所指定的对象:

□    C或者C++程序可以使用ADsGetObject或者ADsOpenObject获得指定对象的接口指针,如果我们不能确定对象支持哪个接口,我们可以在函数中指定接口IADs,因为所有的ADSI目录对象都支持此接口,函数返回之后,再调用QueryInterface成员请求其它的接口指针。

□    对于VB或者VBScript应用程序,可以调用GetObject函数得到指定的目录对象。

时间: 2024-09-19 11:28:05

目录服务技术介绍——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(七)

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

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

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

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

由于目录对象的标识名可能在某些操作的影响下被改变,但目录对象的objectGUID属性永远不会改变,所以我们可以直接在LDAP路径中指定此GUID,客户程序直接绑定到此对象,下面的代码显示了这种用法:IADs *pADs;LPWSTR pszFilter = L"LDAP://MyServer/<GUID=63560110f7e1d111a6bfaaaf842b9cfa>";hr = ADsGetObject( pszFilter, IID_IADs, (void**)&a

目录服务技术介绍——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)上进行传输交换.