• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 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-FAMILY: ; 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永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>