程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> 在.Net環境下用C#操縱活動目錄

在.Net環境下用C#操縱活動目錄

編輯:關於.NET

Windows 2000 Server在Windows NT Server 4.0的基礎上,進一步發展了"活動目錄(Active Directory)"。活動目錄是從一個數據存儲開始的。它采用了類似Exchange Server的數據存儲,稱為:Extensible Storage Service (ESS)。其特點是不需要事先定義數據庫的參數,可以做到動態地增長,性能非常優良。這個數據存儲之上已建立索引的,可以方便快速地搜索和定位。活動目錄的分區是"域(Domain)",一個域可以存儲上百萬的對象。域之間還有層次關系,可以建立域樹和域森林,無限地擴展。

活動目錄充分體現了微軟產品的"ICE",即集成性(Integration),深入性(Comprehensive),和易用性(Ease of Use)等優點。活動目錄是一個完全可擴展,可伸縮的目錄服務,既能滿足商業ISP的需要,又能滿足企業內部網和外聯網的需要。

在.Net環境下操縱活動目錄非常容易,其中提供了很多封裝好的類用來操縱活動目錄,這些類都存放在System.DirectoryServicess名稱空間裡。本文見簡要介紹一下如何使用這些類來讀取活動目錄中的信息。

注:我們假設您已經對活動目錄的概念有了基本的了解。

我的網絡環境由兩個域控制器,和數台win2000工作站組成,安裝了活動目錄用來保存域裡的一切信息,域名是szcs。

下面我們開始建立一個簡單的控制台應用程序,來讀取活動目錄的信息。

第一步:建立項目

(這就不多說了)

第二步:添加引用

由於操縱活動目錄的類都存放在System.DirectoryServices.dll文件裡。所以,我們必須在項目中添加對它的引用。

方法:在菜單中,選擇 項目-引用,選擇System.DirectoryServices.dll,確定。

第三步:引用名稱空間

方法:在程序的開頭出添加下面程序

using System.DirectoryServices;

第四步:編寫程序

下面是一個范例程序

 namespace ADsample
 
 {
  /// 
  /// Summary description for Class1.
  ///
  class Class1
  {
  static void Main(string[] args)
  {
  //
  // TODO: Add code to start application here
  //
  GetAllOU();
  Console.ReadLine();
  }
 
  //獲取目錄中需要的組織單元(OU)
  public static void GetAllOU()
  {
  DirectoryEntry entry = new DirectoryEntry("LDAP://szcs");
  DirectorySearcher mySearcher = new DirectorySearcher(entry);
  mySearcher.Filter = ("(objectClass=organizationalUnit)");
  foreach(SearchResult resEnt in mySearcher.FindAll())
  {
  Console.Write(resEnt.GetDirectoryEntry().Name.ToString());
Console.WriteLine("\t"resEnt.GetDirectoryEntry().Name.ToString());
  }//end foreach
  }//end GetAllOU
  }//end class
 }//end namespace

程序注解:

◆ 程序開始,實例化了一個DirectoryEntry類,其構造函數的參數是"LDAP://szcs",

這裡szcs是域名。

◆ 然後又實例化了一個DirectorySearcher類,用來查詢szcs域中活動目錄中的信息,其構造函數的參數是一個DirectoryEntry類的實例對象。

◆ DirectorySearcher類的Filter屬性用來設置查詢的過濾條件,一般有以下三種:

1、objectClass=organizationalUnit 查詢條件是所有的組織單元(OU)

2、objectClass=group 查詢條件是所有的組(GROUP)

3、objectClass=user 查詢條件是所有的用戶(USER)

當然還可以設置其他的過濾條件,而且可以使用邏輯運算符,詳情請參加MSDN

◆ DirectorySearcher類的Findall方法用來遞歸的查找所有符合條件的對象。其返回結果

是一個SearchResult類型的對象,這是一個集合類型。

◆ 用Foreach語句訪問集合中的所有對象,獲得對象的信息。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved