我的一亩三分地 我就喜欢!
13fen  设为主页
 收藏本站
 
当前位置: > 一亩三分地:首页 > 网络学院 > 网络编程 > ASP专区 > Asp客户端/系统 > 目录服务技术介绍——ADSI(六)
热门文章排行
热门文章排行 手推车”功能的实现(10-07)
八大法则防范ASP网站漏洞(10-23)
ASP教程十一、调试ASP脚本(10-23)
在JSP中访问数据库大全(10-23)
虚机服务中常见Asp.Net低级错误一览(03-21)
精采文章排行
精采文章排行 ASP.NET实现抓取网页中的链接(11-15)
ASP连接数据库的11种方法(11-10)
如何动态创建网页的RSS内容摘要(11-10)
ASP网站漏洞及入侵防范方法(11-10)
ASP自定义函数:对字符串正则替换(11-10)
技术专题推荐
网管论坛交流
 

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

作者:佚名   来源:一亩三分地   点击:   日期:2007-03-23

客户程序也可以利用IADsClass、IADsProperty和IADsSyntax接口在运行时刻确定目录对象的详细属性信息。操作步骤如下:

a.    先绑定到目录对象的表结构对象,可以直接访问目录对象的“schema”属性。

b.    用枚举的办法从表结构对象中找到强制属性或者可选属性,如果客户知道要访问的属性名则可以跳过这一步。

c.    绑定到表结构对象的包容器对象。

d.    从表结构对象的包容器对象获得属性的定义对象。

e.    从属性定义对象获取属性信息,包括属性的语法信息等。

下面的代码演示了如何从获得表结构对象到访问“Owner”属性的细节信息的过程:

Dim obj As IADs

Dim cl As IADsClass

Dim pr As IADsProperty

Dim sy As IADsSyntax

Dim sc As IADsContainer

Set obj = GetObject("WinNT://MyDomain/myMachine")

Set cl = GetObject(obj.Schema)

Set sc = GetObject(cl.Parent)

Set pr = sc.GetObject("Property","Owner")

MsgBox "Attribute: " & pr.Name

MsgBox "Syntax:    " & pr.Syntax

Set sy = GetObject(sc.AdsPath & "/" & pr.Syntax)

MsgBox "Syntax object: " & sy.Name & " of OleAutoDataType: " & sy.OleAutoDataType

(6) 增加或者删除目录对象。

利用包容器对象的IADsContainer接口的方法(见表4),我们可以很方便地增加或者删除目录对象,举例如下:

Dim Container as IADsContainer

Dim NewUser as IADsUser

Set Container = GetObject("WinNT://MyDomain")

' Create the new wrapper.

Set NewUser = Container.Create("user", "PanAimin")

' Write it back to the DS

NewUser.SetInfo

' Set Jane's password.

NewUser.SetPassword("123")

' Delete the user.

Call Container.Delete("user","Mary")

ADSI的各种操作比较简单,只要我们能够理解ADSI的基本结构,并且对核心的几个接口以及常用提供者的一些接口有所了解,就可以用一致的方法访问目录服务,这也说明了ADSI作为通用目录服务标准为程序员带来的最大益处。

实现ADSI提供者要比使用ADSI复杂得多,通常情况下,我们只需使用系统已经定义的ADSI提供者。但如果确实应用需要,我们可以实现自定义的ADSI提供者。为了实现一个ADSI提供者,有一些特性是必须要支持的,而其它的特性则是可选的。下面是一些必须要实现的特性:

(1)     路径解析使用COM的命名规范(moniker),其中名字空间对象必须要实现IParseDisplayName::ParseDisplayName函数以及IADsOpenDSObject接口。

(2)     IADs接口必须实现属性的缓存技术,只有IADs::GetInfo函数和IADs::SetInfo函数才刷新缓存或提交到底层目录服务。

(3)     每一个包容器对象必须实现IADsContainer接口。

(4)     所有的ADSI对象都支持IDispatch接口,以便自动化客户访问属性和方法。

(5)     对于非自动化客户通过IDirectoryObject访问ADSI目录对象,而不是IADs接口。

(6)     ADSI至少实现一个表结构包容器对象,以及相应的语法、属性和类别对象,分别支持接口IADsSyntax、IADsProperty或IADsClass,每个根节点必须包含它自己的表结构包容器对象。

为了让ADSI能够找到自定义的提供者,我们必须在实现了ADSI提供者之后,把它注册到系统注册表中。在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ADs\Providers键下添加新的提供者项(指向提供者组件的ProgID),如果读者感兴趣,可以检查该键项,以便确定当前系统已经安装了哪些提供者。



文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【论坛讨论

   相关文章:
·ASP中巧用Response属性 ·第六课:ASP脚本循环语句
·在 Web 页上使用条件数值格式 ·连接数据库查询手册(不仅仅适用于asp)
·警惕"给你的FileSystemObject对象加把锁" ·用ASP做全文检索

   文章评论:(条)
  
 请留名: 匿名评论   点击查看所有评论 网管论坛
 

  责任编辑:一分  声明:刊登此文章是为了传递更多信息,文章内容仅供参考,转载请注明出处。