您的位置:首页精文荟萃软件资讯 → ADSI及其在WEB上的应用

ADSI及其在WEB上的应用

时间:2004/10/7 18:32:00来源:本站整理作者:蓝点我要评论(0)


            
             
              
             
            

               
               

            



            关键词:ADSI, Component, ASP, IIS
摘要:本文简要介绍了ADSI的特性,并通过实例介绍了如何利用ADSI开发基于WEB的Windows NT管理程序。
ADSI(Active Directory Service Interface)是Microsoft公司推出的允许客户以同一种界面管理不同目录服务的应用接口,它凭借强大的功能、简单的操作很快得到了广泛的应用。那么,ADSI究竟是怎样的东西,又如何利用呢?
首先,要明白什么是Active Directory(活动目录)。
Active Directory是未来的Windows2000中包含的一种目录服务,它扩展了以前版本Windows中目录服务的特性,并增加了一些全新的功能。活动目录具有安全、可分布、可分区、可复制等特点。它的设计方式可以很好地工作在各种设置上,不管是有几百个对象的单机还是由上百万个对象的服务器组。活动目录的新特性,是管理者和最终用户都可以操纵、管理大量的信息。
ADSI是一系列访问各种存储方式的数据的编程接口,在Microsoft目前的产品中,Windows NT4.0Server,Exchange,IIS,Site Server支持这种接口,在NT5.0种,ADSI将成为操作系统的接口并有可能取代注册表。采用这种借口,可以访问操作系统的所有配置信息。
ADSI认为任何数据都存为面向对象的数据库。通过ADSI,你不要掌握类似SQL一类的查询语言,与传统的数据库相比,对面向对象的数据库变成更加简单:在传统的数据库中,编程者必须理解一个对象怎样存储,在ADSI中,编程者只需知道对象的名字就可以访问它。
有很多种语言可以用来对ADSI进行编程,Visual Basic,VBScript,Java,C,C++都可以访问ADSI;由于Active Server Pages和VBScript与其结合的非常好,所以可以很容易写出访问目录服务的Internet应用程序。在Internet应用程序中,可以使用.asp文件在服务器上创建、操纵ADSI对象,并将其结果显示在Web页上。
来看一个简单的例子:
生成一个包含以下代码的ASP文件:
<%
strMachineName = "localhost" 'domain name
strObjectPath = "W3SVC/1" 'object name

'construct object location in IIS
strPath = "IIS://" & strMachineName & "/" & strObjectPath
Set IISObject = GetObject (strPath) 'connect to IIS metabase
%>
Name = "<%= IISObject.Name %>"

Parent= "<%= IISObject.Parent %>"

SchemaLocation = "<%= IISObject.Schema %>"

Class = "<%= IISObject.Class %>"

Guid = "<%= IISObject.Guid %>"

ADSPath = "<%= IISObject.AdsPath %>"



用浏览器浏览,输出结果如下:

Name = "1"
Parent= "IIS://localhost/W3SVC"
SchemaLocation = "IIS://localhost/schema/IIsWebServer"
Class = "IIsWebServer"
Guid = ""
ADSPath = "IIS://localhost/W3SVC/1"

注意,如果要运行上面这段代码,登录用户必须拥有IIS的管理员权限,为了使这种应用更具有普遍性,可以将程序做成组建安装在服务器上。这里,举一个例子,做一个通过对ADSI编程修改Windows NT用户口令的组件。
1、 打开VB5.0 或 6.0 ,新建一个ActiveX DLL
2、 将工程命名为 PasswordChanger,将缺省的类模块命名为 Main.
3、 将类Main的instancing属性改为:5-MultiUser
4、 将工程的线程模块设为:单元线程
5、 设定Microsoft Active DS Type Library(activeds.tlb)
6、 保存工程,将类命名为:Main.cls,工程命名为PasswordChanger.vbp.
7、 在类的代码窗口中加入以下代码:
Option Explicit

' 修改口令

Public Sub SetPassword(ByVal pstrUser As String, _
ByVal pstrOldPassword As String, ByVal pstrNewPassword _
As String, ByVal pstrConfirmPassword As String)

Dim adsUser As IADsUser
Dim strDialogText As String

On Error GoTo ChangePasswordErrorHandler
'用户名不能为空
If pstrUser <> vbNullString Then
'口令不能为空
If (Not (pstrOldPassword = vbNullString)) And _
(Not (pstrNewPassword = vbNullString)) Then
'两次必须输入相同的口令
If (Not (pstrNewPassword <> pstrConfirmPassword)) Then

' 设定 ADSI 提供者为 WindowsNT
' (domain 为主域)
Set adsUser = GetObject("WinNT://domain/" & pstrUser & ",user")

' 调用 ADSI ChangePassword 方法
adsUser.ChangePassword pstrOldPassword, pstrNewPassword
' 在浏览器端产生 HTML 对话框
strDialogText = """成功修改用户 " & pstrUser & _
" 的口令."""
Call CreateAlertMarkup(strDialogText)

Else

' 在浏览器端产生 HTML 对话框
strDialogText = """New/Confirm passwords are different."""
Call CreateAlertMarkup(strDialogText)

End If

Else

' 在浏览器端产生 HTML 对话框
strDialogText = """A value for Old/New passwords is required."""
Call CreateAlertMarkup(strDialogText)

End If

End If

Set adsUser = Nothing

Exit Sub

'**********

ChangePasswordErrorHandler:

'
'在浏览器端产生提示 “错误” 对话框
strDialogText = """用户 " & pstrUser & "的口令无法修改.\n\n"
strDialogText = strDialogText & "1. 新口令不能 " & _
"与以前的口令相同\n"
strDialogText = strDialogText & "2. 口令必须为 " & _
"8-14个字母长.\n"
strDialogText = strDialogText & "3. 口令至少要包含 " & _
"以下情况下的3个字母:\n"
strDialogText = strDialogText & " - 英文大写字母 (A-Z)\n"
strDialogText = strDialogText & " - 英文小写字亩 (a-z)\n"
strDialogText = strDialogText & " - 阿拉伯数字 (0-9)\n"
strDialogText = strDialogText & " - 其他字符" & _
" (例如标点符号)\n"
strDialogText = strDialogText & "4. 口令中不能包含你的用户名 " & _
"或你名字的任何一部分"""
Call CreateAlertMarkup(strDialogText)

End Sub

' 产生JavaScript警告对话框
Private Sub CreateAlertMarkup(pstrDialogText As String)

Dim strScriptingLanguage As String

strScriptingLanguage = """JavaScript"""

objResponse.Write vbCrLf
objResponse.Write ("") & vbCrLf

End Sub
8、 编译这段代码,生成PasswordChanger.dll.
9、 将产生的PasswordChanger.dll文件拷贝到 WINNT\SYSTEM32目录下。
10、 在dos提示符窗口中执行以下命令:
regsvr32 PasswordChanger.dll

系统将弹出一个对话框,告诉你登记组件成功。下面,需要写一个ASP文件来调用这个组件。


<%

' declare variables
Dim objReference
Dim strUser
Dim strOldPassword
Dim strNewPassword
Dim strConfirmNewPassword

' obtain form values
strUser = Request.Form("txtUser")
strOldPassword = Request.Form("txtOldPassword")
strNewPassword = Request.Form("txtNewPassword")
strConfirmNewPassword = Request.Form("txtConfirmNewPassword")
if strUser<>"" then

' create object
Set objReference = Server.CreateObject("PasswordChanger.Main")

' change the password
Call objReference.SetPassword(strUser,strOldPassword,strNewPassword,strConfirmNewPassword)

' release object reference
Set objReference = Nothing
end if
%>
修改NT用户口令




修改NT用户口令





























User:





Password:







New Password:








Confirm Password:





style="font-FAMILY: ; HEIGHT: 24px; WIDTH: 149px" type=submit value="Change Password">






将此文件命名为changepwd.asp,在浏览器中运行,输入数据测试一下,怎么样,用户的口令是否已经修改了?

通过以上的例子可以看出,ADSI的确具有很强大的功能,操作也非常简单,结合ASP和VB,一定可以开发出功能更强大的Internet应用程序。



相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 360快剪辑怎么使用 36金山词霸如何屏幕取词百度收购PPS已敲定!3

最新文章 微信3.6.0测试版更新了微信支付漏洞会造成哪 360快剪辑怎么使用 360快剪辑软件使用方法介酷骑单车是什么 酷骑单车有什么用Apple pay与支付宝有什么区别 Apple pay与贝贝特卖是正品吗 贝贝特卖网可靠吗

人气排行 xp系统停止服务怎么办?xp系统升级win7系统方电脑闹钟怎么设置 win7电脑闹钟怎么设置office2013安装教程图解:手把手教你安装与qq影音闪退怎么办 QQ影音闪退解决方法VeryCD镜像网站逐个数,电驴资料库全集同步推是什么?同步推使用方法介绍QQ2012什么时候出 最新版下载EDiary——一款好用的电子日记本