[C#.NET][VB.NET][Active Directory] 如何 存取 Active Directory 帳號資訊 / How to Get Active Directory of Information
System.DirectoryServices 命名空間 可對 Active Directory (AD)存取;但要稍為瞭解一下Active Directory Services Interface (ADSI) 技術,當瞭解後就可以來對AD存取。
ADSI預設提供了下列幾組 Provider
因為存取 Active Directory 所以就選擇 Lightweight Directory Access Protocol (LDAP),要使用LDAP存取ADSI,首先要先瞭解LDAP的連線字串格式:
LDAP://HostName[:PortNumber][/DistinguishedName]
HostName:可以是主機、IP或是Domain Name。 PortNumber:如果你的主機是使用特殊的port,就必須要定義。 DistinguishedName:簡稱 DN 讀取結構用。
參考:
http://msdn.microsoft.com/en-us/library/aa746384%28VS.85%29.aspx
Novell 看起來應該是 3rd 軟體,我沒用不知道要不要錢www.novell.com/coolsolutions/feature/11204.html
若對 LDAP 不解可參考下列連結
http://forum.slime.com.tw/thread79091.html
大至上瞭解是什麼一回事後就可以動手來處理,首先當然先匯入 System.DirectoryServices 命名空間 ; 1.然後使用 DirectoryEntry 類別進入AD 架構。 2.再使用 DirectorySearcher 類別搜尋 AD。 3.用 SearchResult 類別列出搜尋的結果。
基本上把握住這三個類別,就能讀取 AD 的資料了。到目前為止都很順利,咦!那權限問題呢?誰都能進入 AD 嗎?經小弟測試後發現,如果你只需要讀取 AD 的資料,你必須有 AD 帳號密碼,該組帳號只要擁有 Domain User 的權限就能撈到資料了。這真是太棒了!
範例如下
執行結果如下
查詢某帳號資訊:
執行結果如下
範例下載:
CS_GetADAccount.rar
VB_GetADAccount.rar
若有謬誤,煩請告知,新手發帖請多包涵
Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET