程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#中的活動目錄開發

C#中的活動目錄開發

編輯:C#入門知識

我想大家都很熟悉了,活動目錄可以說是 Windows 操作系統中一個很重要的變化。 因此,可以用自己的C# 代碼操作活動目錄是一件值得驕傲的事情。通過使用 .Net framework,我們可以輕易的做到這一點。 在者篇文章中,我將簡單的介紹如何用C#編程來操作活動目錄。
Sommaire
介紹
1.活動目錄的概念
1.1活動目錄的概念
1.2?活動目錄中的協議
2. 綁定
2.1 System.DirectoryServices 命名空間
2.2 綁定
2.3 例子
3. 活動目錄的屬性
3.1 列舉活動目錄的屬性
3.2 屬性集合
3.3 建立新對象
4. 在活動目錄中搜索
4.1 DirectorySearcher 類
4.2 根節點
4.3 過濾器
4.4 屬性
4.5 查找范圍
4.6 排序
4.7 返回值
結語
1.活動目錄的概念
我想大家都知道活動目錄了。但是,為了讓讀者明白,我還是在說一下在.NET framework中活動目錄的概念。

1.1活動目錄的概念
活動目錄中的數據以樹形結構的形式儲存。 也就是說,活動目錄可以被看成是一顆樹。為了節省時間,這裡 將不對活動目錄中的Object, multimaster replication, forest, sites 的概念進行重復。

 

1.2 活動目錄中的協議
我們要說說活動目錄中幾個重要的協議。


1.2.1  LADP
輕型目錄訪問協議,經常被用來訪問活動目錄。如果你是一位C 語言開發者,你應該對使用LADP API 訪問活動目錄感到熟悉。但是,我們在C# l中使用-- ADSI (Active Directory Service Interface)來替代。

1.2.2 ADSI
活動目錄服務接口,是 .NET framework 中的新工具。它定義了COM 接口來提供不同協議的服務。它在分布式系統中為不同的目錄訪問提供服務。要是用 ADSI ,就要引入System.DirectoryServices 命名空間。

下面式關於ADSI 服務的COM 接口的簡圖。COM 並不再本文中占有過多比例,即使式新手也能看懂。

 

本文中,我們主要使用LDAP 協議。你可以在MSDN中找到更詳細的信息。

 2. 綁定
2.1 System.DirectoryServices 命名空間
我們使用 ADSI 來管理域控制器,在域中添加用戶,管理打印機,這些都可以通過我們的程序來控制。 由於System.DirectoryServices命名空間,.NET 開發者多了一個有力的工具。 我們要討論這個命名空間的類和函數: DirectoryEntry 這是 System.DirectoryServices 命名空間中最有用的一個類。它的實例代表活動目錄中的對象。. DirectoryEntries 代表 DirectroryEntry 類的集合,包含活動目錄的子目錄。 DirectorySearcher 主要用於屬性的搜索。

2.2 綁定
綁定用來連接活動目錄:

 

開始的 “LDAP” 說明我們使用LADP協議連接活動目錄。除了LADP,還有:GC, IIS, WinNT, NIDS and NWCOMPAR. 第二部分制定域控制器。如果不制定這部分, Windows Server 2003 會自動搜索域控制器。 第三部分是端口號。LDAP 的默認端口號是 389. The last part is the distinguished name. 你可以看到 “OU=***, DC=***, DC=**” 是基於X.500的LDAP語法。

2.3 例子
這是一個關於綁定的例子:

 

如果這是你第一次接觸活動目錄編程,你不能直接使用System.DirectoryServices 命名空間。 你必須添加這個命名空間到工程文件中。右鍵點擊工程名,選擇 “Add Reference…” ,再選擇.NET ,選中System.DirectoryServices 再點OK.

3. 活動目錄的屬性
在綁定一個工作目錄之後,我們應該拿那一個物件的不同屬性。 也就是說,如果我們想要修改某事或把使用者加入那一個網域,我們起先應該知道那一個物件的結構。 在這章中,我們將會見到該如何列出特性,使用者附帶說明, 而且在綴合的工作之後更新工作目錄的信息。

3.1 列舉活動目錄的屬性
有許多方法拿工作目錄的物件特性,我們將會一點之前討論他們:

一些屬性在 DirectoryEntry 類別中會提供關於物件的有用資訊給我們, 舉例來說, 像名字, Guid , SchemaClassName 和等等如果工作綁與特定的使用者帳戶一起做,它能夠直接地列出這些屬性。

 

資訊科技也被推薦拿使用 DirectoryEntry.Properties 的屬性。 但是在這一個條件中,你應該知道你想要拿的屬性名字。 下列各項是一個簡單的例子表現該如何在 C#語言中達成這.

3.2 屬性集合
明顯地, 有工作目錄的許多不同類型的物件。 為了要取回這些屬性, DirectoryEntry 類別的特性屬性將會返回 PropertyCollection 。 因為一個屬性可以包含許多數值,即將來臨的一個好例圖是使用者物件的 屬性, 一個使用者總是可以擁有許多電話號碼。 在下列的例子中, 特性 [名字]將會返回一個物件的行列。 這些屬性的數值可能是字串,十位和另外地。 無論如何,我們將會使用 ToString() 方法顯示他們。

 

3.3 建立新對象
與 DirectoryEntry 類別的成員在一起,我們也可以產生工作目錄的一個新的物件。

 

 

首先,我們綁 hebut.supinfo.com 服務器的一個組織的單位。 如果我們蒼白的增加我們的新物件,我們應該第一綁一個組織的單位。 情形是相同的在工作目錄管理中; 我們產生正確的 OU 的一個新的使用者。

此外,我們用被 DirectoryEntry.Children 退還的屬性產生 DirectoryEntries 。 我們可以增加,劃除, 而且更新我們以 DirectoryEntries 的幫忙需要的信息。 在這一個例子中,我顯示方法增加. 這一個方法需要二個函數中的獨立變數, 這第一一是符合簡易資料存取協定的語法物件的名字; 秒一是工作目錄的數據結構的型態。

而且,我們增加使用者我們剛剛創造的屬性。 那增加 () 特性的方法將會增加特定的物件屬性。 然而,如果屬性在使用者物件中不退出,COMException 將會被丟。

最後,我們應該使用方法 DirectoryEntry.CommitChanges() 確定我們制造的變化。 這一個方法以 Java 語言語言相當像轉儲清除 () 方法, 清除存儲器的區域,而且寫數據進工作目錄之內。


4. 在活動目錄中搜索
工作目錄是一種已經被為拜訪最佳化的數據庫。 因此,在工作目錄中搜尋是相當方便。 在 C語言中# 語言和那 .框架,微軟公司給我們一個有力的工具完成這一個任務-DirectorySearcher 類別。 那一個類別只可能與簡易資料存取協定協定一起應用; 它不能被在 NDS 或 IIS 之下例示。
4.1 DirectorySearcher 類
首先,我認為通常檢視 DirectorySearcher 類別是非常重要的。 你將會找微軟的開發商網路的比較精確的信息。
我們繼續使用例子上方, 意謂,我將不做那綁工作, 它相同於我們被在章中介紹那綁。

4.2 根節點
DirectorySearcher 類別的這一個 SearchRoot 屬性敘述我們的搜尋工作的開始位置。 這一個屬性的內定數值是你綁的工作目錄的根路徑。
4.3 過濾器
濾波器幾乎是相同於我們見到的在其他部份那 .框架,定義我們想要取回的屬性型態。 我們可以使用我們的展示語句的聯系值機員, 如此的當做 <=,=,>= 和等等那 & 和 | 是也可得的在這一個濾波器展示語句中。 在上述的例子中,它非常明顯我們想要搜尋所有的  " 學生 " 的使用者。 如果我改變展示語句進入 "(objectClass=*)之內", 它不會是令人驚訝的在那一個工作目錄中的所有物件在我們的搜尋中被選擇。
4.4 屬性
默認的屬性值是“Path” 和 “Name”.
4.5 查找范圍
一下是查找范圍的枚舉值:
Base Limits the search to the base object. The result contains at most one object.
OneLevel Searches one level of the immediate children, excluding the base object.
Subtree Searches the whole subtree, including all children and the base object itself.


4.6 排序
對活動目錄中的內容排序:
searcher.Sort = new SortOption("Name",SortDirection.Ascending);
4.7 返回值
現在,我們開始在活動目錄進行查找。FindOne() 查找單個對象, FindAll() 返回所有對象。如果你想得到所有的對象,就要使用FindAll() 返回一個 SearchResultCollection。

結語
本文只是涉及了活動目錄在C#中編程的基礎,隨著實際的應用,你會發現C#語言的強大之處。可以說,這一個文章只是關於工作目錄發展的基本介紹在 .框架。 我們已經檢視一些由微軟公司提供的有力工具。 由於 .技術,我們能夠用我們自己的碼操縱工作目錄。 而且,我們可以在 C語言中為網絡系統管理師制造比較有效率的工具#. 無論如何,C語言的新功能# 和 .框架是如此滿意。

    

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