ADSI及其在WEB上的應用
發表于:2007-05-25來源:作者:點擊數:
標簽:
關鍵詞:ADSI, Component, ASP, IIS 摘要:本文簡要介紹了ADSI的特性,并通過實例介紹了如何利用ADSI 開發 基于WEB的 Windows NT管理程序。 ADSI(Active Directory Service Interface)是Microsoft公司推出的允許客戶以同一種界面管理不同目錄服務的應用接
關鍵詞:ADSI, Component, ASP, IIS
摘要:本文簡要介紹了ADSI的特性,并通過實例介紹了如何利用ADSI
開發基于WEB的
Windows NT管理程序。
ADSI(Active Directory Service Interface)是Microsoft公司推出的允許客戶以同一種界面管理不同目錄服務的應用接口,它憑借強大的功能、簡單的操作很快得到了廣泛的應用。那么,ADSI究竟是怎樣的東西,又如何利用呢?
首先,要明白什么是Active Directory(活動目錄)。
Active Directory是未來的Windows2000中包含的一種目錄服務,它擴展了以前版本Windows中目錄服務的特性,并增加了一些全新的功能?;顒幽夸浘哂?STRONG>
安全、可分布、可分區、可復制等特點。它的設計方式可以很好地工作在各種設置上,不管是有幾百個對象的單機還是由上百萬個對象的
服務器組?;顒幽夸浀男绿匦?,是管理者和最終用戶都可以操縱、管理大量的信息。
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 %>"<br>
Parent= "<%= IISObject.Parent %>"<br>
SchemaLocation = "<%= IISObject.Schema %>"<br>
Class = "<%= IISObject.Class %>"<br>
Guid = "<%= IISObject.Guid %>"<br>
ADSPath = "<%= IISObject.AdsPath %>"<br>
用瀏覽器瀏覽,輸出結果如下:
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 ("<SCRIPT LANGUAGE=" & strScriptingLanguage & ">") & vbCrLf
objResponse.Write ("<!--") & vbCrLf
objResponse.Write ("{") & vbCrLf
objResponse.Write vbTab & ("window.alert(" & pstrDialogText & ");") & vbCrLf
objResponse.Write ("}") & vbCrLf
objResponse.Write ("-->") & vbCrLf
objResponse.Write ("</SCRIPT>") & vbCrLf
End Sub
8、 編譯這段代碼,生成PasswordChanger.dll.
9、 將產生的PasswordChanger.dll文件拷貝到 WINNT\SYSTEM32目錄下。
10、 在dos提示符窗口中執行以下命令:
regsvr32 PasswordChanger.dll
系統將彈出一個對話框,告訴你登記組件成功。下面,需要寫一個ASP文件來調用這個組件。
<html>
<head>
<%
' 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
%>
<title>修改NT用戶口令</title>
</head>
<body bgcolor="#ffffff">
<p><h2><font color=black face=Arial>修改NT用戶口令</font></h2></p>
<form method="post" name="frmChangePassword" action="Changepwd.asp">
<table width=325 border="0">
<tr>
<td colSpan=2><b>
<font size=+1 face=Arial color=black>
User:
</font>
</b>
</td>
<td>
<input type=text size=20 name="txtUser"></td>
</tr>
<tr>
<td colSpan=2><b>
<font size=+1 color=black face=Arial>
Password:
</font>
</b>
</td>
<td><font>
<input type="password" name="txtOldPassword">
</font></td>
</tr>
<tr>
<td colSpan=2>
<b>
<font size=+1 color=black face=Arial>
New Password:
</font>
</b>
</td>
<td>
<font>
<input type="password" name="txtNewPassword">
</font>
</td>
</tr>
<tr>
<td colSpan=2><b>
<font size=+1 color=black face=Arial>
Confirm Password:
</font></b></td>
<td>
<input type="password" name="txtConfirmNewPassword">
</font></td>
</tr>
<tr>
<td colSpan=3></td>
</tr>
<tr>
<td colSpan=3>
<div align=center>
<font color=black face=Arial>
<INPUT id=txtChangePassword name=txtChangePassword
style="font-FA
MILY: ; HEIGHT: 24px; WIDTH: 149px" type=submit value="Change Password">
</div>
</font>
</td>
</tr>
</table>
</form>
</body>
</html>
將此文件命名為changepwd.asp,在瀏覽器中運行,輸入數據
測試一下,怎么樣,用戶的口令是否已經修改了?
通過以上的例子可以看出,ADSI的確具有很強大的功能,操作也非常簡單,結合ASP和VB,一定可以開發出功能更強大的Internet應用程序。
原文轉自:http://www.kjueaiud.com
老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月
|