收 藏
投 稿
繁 体
RSS
首 页
运 营
学 院
建 站
论 坛
Web
master8.net
网站运营
欢迎在本站发布信息,在线投递稿件
请点这里
。编辑QQ:4908220,欢迎联系交流。
业界动态
创业故事
推广研究
策划盈利
电子商务
企业平台
站长工具
SEO查询
Whois查询
Pr查询
域名查询
IP查询
网页编辑器
技术学院
投递稿件请点这里:)
网页设计
HTML
XHTML
CSS
Javascript
Frontpage
Dreamweaver
图形图像
PhotoShop
FireWorks
Flash
Coreldraw
程序开发
PHP
ASP
.NET
JSP
CGI
XML
数据库
MySQL
Oracle
MSSQL
Access
综合应用
设计理论
建站系统
服务器管理
常用下载
办公应用
建站服务
如有建站意向,请尽快联系我们,以便安排时间...
QQ:4908220
作品展示
服务范围
服务流程
服务报价
联系方式
付款方式
站长论坛
注册
/
登陆
/
忘密?
交流区
站长酒吧
SEO&推广
网赚交流
建站系统
服务&信息
招聘求职
项目外包
广告发布
网络资源
技术区
网页设计师
界面设计师
WEB程序员
计算机应用
文章正文
» 您的当前位置:
首页
>>
学院
>>
程序开发
>>
ASP
目录服务技术介绍——ADSI(5)
来源:
互联网
| 时间:2005-10-04 | 浏览:
相关评论
|
报告错误
|
发布文章
【字号:
大
|
中
|
小
】 【背景色
】
由于目录对象的标识名可能在某些操作的影响下被改变,但目录对象的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函数。使用缓存可以避免频繁地从服务器读取属性数据,从而降低网络负担。
如果客户程序不希望在缓存状态下读取属性值,可以使用目录对象的另一个接口IDirectoryObject,它可以直接访问底层目录服务的对象属性数据,为了优化性能,每次它可以取多个属性值。
(4) 设置目录对象的属性。
与读取属性相对应,设置对象属性可通过对象的IADs::Put或者IADs::PutEx接口成员函数实现,但是这两个函数只是把属性值写到缓存中,客户程序必须显式调用IADs::SetInfo成员函数,以便使更新后的属性值反映到底层目录服务中。举例如下:
Dim MyUser As IADsUser
Dim NewName As Variant 
Set MyUser = GetObject("WinNT://MyServer/MyName") 
NewName = "Pan Aimin"
User.Put "FullName", NewName
User.SetInfo
当客户程序创建了一个新的目录对象之后,只有在调用了IADs::SetInfo函数后,目录对象才真正被永久创建,否则只是缓存中的对象而已。
(5) 表结构的用法。
ADSI提供了用表结构描述目录对象属性的机制,客户程序可以在运行时刻访问目录对象表结构信息,下面的代码演示了表结构的基本用法:
Dim Computer As IADsComputer
Dim Class As IADsClass
Dim V As Variant
Set Computer = GetObject("WinNT://MyDomain/MyMachine")
Set Class = GetObject(c.Schema)
Debug.Print "Properties in this Class: "
For Each V In Class.MandatoryProperties
    Debug.Print "   "; V
Next V
For Each V In Class.OptionalProperties
    Debug.Print "   "; V
Next V
上一篇:
目录服务技术介绍——ADSI(4)
下一篇:
万维网创始人博客处女秀
我要投稿
打印本文
推荐本文
加入收藏
返回顶部
关闭窗口
12-03
软件发布:风越ASP代码生成器 [FireAsp Creator] V1.8
07-10
ASP种种错误提示解决方案
07-10
Asp+Sql 对数据库的各种操作
07-06
ASP Session
06-30
ASP 编程中20个非常有用的例子
ASP种种错误提示解决方案
从ASP过渡到ASP.net遗留的二十大...
如何把ASP编写成DLL
ASP开发中存储过程应用全接触
利用ASP发送和接收XML数据的处理...
ASP自动解压RAR文件
用php如何操作LDAP
ASP开发web站点
用ASP实现远程抓取网页到本地数...
ASP无组件上传进度条解决方案
more..
» 相 关 评 论
验证码:
站长吧首页
-
网站运营
-
站长学院
-
SEO查询
-
站长论坛
-
建站服务
-
联系本站
-
广告/业务
©2005-2006 站长吧 Master8.NET All rights reserved 陕ICP备05010609号
九州未来科技提供服务器支持
| 网站空间 | 虚拟主机