C# 連接 OpenLDAP 使用方法 (Anonymous 連線 / 搵 同一個 LDAP Directory Level 既 Record )
Form1.cs |
using System.DirectoryServices; private void LDAPCheck(String HostName, String Query) { DirectoryEntry objEntry = new DirectoryEntry(HostName, "", "", AuthenticationTypes.Anonymous); DirectorySearcher objSearcher = new DirectorySearcher(objEntry, Query); objSearcher.PropertiesToLoad.Add("adspath"); objSearcher.PropertiesToLoad.Add("objectclass"); objSearcher.PropertiesToLoad.Add("sn"); objSearcher.PropertiesToLoad.Add("ou"); objSearcher.PropertiesToLoad.Add("cn"); SearchResultCollection objSearchResultCollection = objSearcher.FindAll(); DataTable dt = new DataTable(); dt.Columns.Add("cn"); dt.Columns.Add("ou"); dt.Columns.Add("adspath"); dt.Columns.Add("sn"); dt.Columns.Add("objectclass"); String ad = ""; String objectclass = ""; String sn = ""; String ou = ""; String cn = ""; if (objSearchResultCollection != null) { foreach (SearchResult iresult in objSearchResultCollection) { ad = iresult.Path; foreach (string PropertyName in iresult.Properties.PropertyNames) { foreach (Object key in iresult.GetDirectoryEntry().Properties[PropertyName]) { if (PropertyName.ToLower() == "objectclass") objectclass = objectclass.Trim() + " " + key; else if (PropertyName.ToLower() == "sn") sn += key; else if (PropertyName.ToLower() == "ou") ou += key; else if (PropertyName.ToLower() == "cn") cn += key; } } dt.Rows.Add(cn, ou, ad, sn, objectclass); ad = ""; objectclass = ""; sn = ""; ou = ""; cn = ""; } } dataGridView1.DataSource = dt; dataGridView1.AutoResizeColumn(0); dataGridView1.AutoResizeColumn(1); dataGridView1.AutoResizeColumn(2); dataGridView1.AutoResizeColumn(3); dataGridView1.AutoResizeColumn(4); } |