日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

活动目录编程

發布時間:2025/7/25 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 活动目录编程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

載自:ZDNet China

目錄樹的每個節點包括一系列能夠被檢索和操控的屬性。下面的術語在使用活動目錄時很有用。

  • 目錄:用來保存信息的信息源。
  • 活動目錄架構:用來定義目錄對象的屬性。它類似于用來定義數據庫結構的數據庫架構。

現在讓我們把主要精力轉到如何使用活動目錄上吧。

通過代碼訪問目錄

.NET框架為訪問活動目錄提供了System.DirectoryServices命名空間。它使用活動目錄服務接口(Active Directory Services Interfaces,ADSI)技術,微軟也向其他很多網絡提供商提供這個接口。這個命名空間包括兩個組件類:

  • DirectoryEntry用來使用活動目錄層次里單獨的節點或者對象。它要與helper類一起使用才能操控目錄資源和瀏覽資源樹。你可以創建、刪除、重命名、移動子節點,并枚舉子節點。
  • DirectorySearcher讓你使用輕型目錄訪問協議(Lightweight Directory Access Protocol,LDAP),它是唯一能夠支持目錄搜索的ADSI提供程序。你可以用DirectoryEntry類來使用搜索的結果。

盡管上面不是命名空間所包含的所有類,但是它們是最重要和最常用的兩個。下面列表A里的C#代碼用來訪問我網絡上的活動目錄:

DirectoryEntry de = new DirectoryEntry();
de.Path = "LDAP://192.168.1.1/CN=Users;DC=DomainName";
de.Username = @"DomainName\UserName";
de.Password = "Password";

下面列表B里是相應的VB.NET代碼:

Dim de As DirectoryEntry
Set de = New DirectoryEntry()
de.Path = "LDAP://192.168.1.1/CN=Users;DC=DomainName"
de.Username = @"DomainName\UserName"
de.Password = "Password"

這些代碼讓你能夠訪問活動目錄,這樣你就可以使用目錄對象。你可能注意到路徑用的是LDAP。ADSI包括下面這四個目錄服務提供程序(我還提供了每個程序的句法):

  • Windows 2000Windows XPWinNT://path
  • LDAPLDAP://path
  • Novell NetWare目錄服務:NDS://path
  • Novell NetWare 3.x:NWCOMPAT://path

注意:使用活動目錄一定要求安裝好ADSI SDK或者ADSI運行庫之后,才能夠創建使用這一功能的應用程序。Windows 2000和XP默認就已經安裝了它們。我們把上面的示例代碼進行了擴展,以訪問對象的所有屬性,見下面的列表C

DirectoryEntry de = new DirectoryEntry("LDAP://192.168.1.1/CN=Users;DC=DomainName");
foreach(string key in de.Properties.PropertyNames) {
Console.WriteLine(key + " = ");
foreach(Object obj in de.Properties[key])
Console.WriteLine(obj);
} ?

列表D是相應的VB.NET代碼:

Dim de As DirectoryEntry = New DirectoryEntry

("LDAP://192.168.1.1/CN=Users;DC=DomainName")
Dim key As String
Dim obj As Object
For Each Key In de.Properties.PropertyNames
Console.WriteLine(key & " = ")
For Each obj In de.Properties(key)
Console.WriteLine(CStr(obj))
Next obj
Next Key

?

由于可以訪問目錄,我們可以定位和操控已有的項目,還可以添加新的對象。

在使用目錄的時候,你可能需要更改對象的一個或者多個屬性。例如,保存在目錄下的用戶的電話號碼可能會發生改變。下面列表E里的代碼用到了前面提到的類來改變這個屬性:

DirectoryEntry de = new
DirectoryEntry("LDAP://192.168.1.1/CN=Users;DC=DomainName");
de.Properties["HomeNumber"])[0] = "111-999-9999";
de.CommitChanges();

必須調用CommitChanges方法來進行永久的更改。如果你不使用這個方法,所進行的改變就不會被保存。相應的VB.NET見列表F

Dim de As DirectoryEntry = New
DirectoryEntry("LDAP://192.168.1.1/CN=Users;DC=DomainName")
objDirEnt.Properties("HomeNumber")(0) = "111-999-9999"

你可以用這種方式來處理所有的屬性。你可能會碰到新對象需要被加到目錄里的情況。

添加新對象

添加新對象很簡單。你先要使用DirectoryEntry對象,再用其Children屬性的Add方法添加新的對象。它使用目錄的多層次結構,所以你是正在向項目加入節點。列表G的C#代碼加入了一個新的目錄項(一個用戶):

DirectoryEntry de = new
DirectoryEntry("LDAP://192.168.1.1/CN=Users;DC=DomainName");
de.Children.Add("Joe Blow", "user");
de.CommitChanges(); ?

列表H里是相應的VB.NET代碼:

Dim de As DirectoryEntry = New
DirectoryEntry("LDAP://192.168.1.1/CN=Users;DC=DomainName")
de.Children.Add("Joe Blow", "user")
de.CommitChanges()

這是一個非常基本的例子,因為(實際工作中)肯定會加入更多的用戶信息。你可能還需要確保用戶在被添加之前并不存在。

搜索目錄

DirectorySearcher類使得搜索目錄里的已有對象變得很容易。列表I的C#代碼會進行一次檢索并顯示結果:

DirectoryEntry de= new
DirectoryEntry("LDAP://192.168.1.1/CN=Users;DC=DomainName");
DirectorySearcher srch = new DirectorySearcher(de);
srch.Filter = ("(HomeNumber=999-000-0000)");
foreach(SearchResult se in srch.FindAll()) {
Console.WriteLine( se.GetDirectoryEntry().Path );
}

這段代碼使用已有的DirectoryEntry對象創建了DirectorySearcher類的一個實例。DirectorySearcher類的Filter屬性定義了搜索的標準。FindAll方法用來返回符合搜索標準的所有對象,循環用來顯示到達符合標準的項目的路徑。列表J是相應的VB.NET代碼:

Dim de As New DirectoryEntry("LDAP://192.168.1.1/CN=Users;DC=DomainName")
Dim srch As New DirectorySearcher(de)
Dim re As SearchResult
srch.Filter = ("(HomeNumber=999-000-0000)")
For Each re In srch.FindAll()
Console.WriteLine(re.GetDirectoryEntry().Path)
Next re

又一種數據源

活動目錄為網絡數據提供了一個多層次數據結構。此外,DirectoryEntry和DirectorySearcher這兩個類通過開發人員熟悉的語言為訪問目錄內容提供了一條便捷的途徑。你可以訪問目錄里的數據,也可以向里面保存新的數據。這是手頭又一種數據存儲區。

Tony Patton的職業生涯開始于應用程序開發員,并已經獲得了Java、VB、Lotus和XML的認證,以證明其專業知識水平。

查看本文的國際來源

轉載于:https://www.cnblogs.com/jcjks/archive/2006/05/29/412429.html

總結

以上是生活随笔為你收集整理的活动目录编程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。