AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)

Active Directory 是一种企业级目录服务,该服务可伸缩、使用 Internet 标准技术从基础建立,并完全在操作系统级别上集成。Active Directory 简化了管理,使用户很容易找到各种资源。Active Directory 提供了非常广泛的特性和功能。

 一、单一数据源的实现

下面代码实现了取得AD里面的数据,并返回一个DataSet
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)public class ADHelper
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)    
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码){
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)        
public static DataSet GetAllAccounts(string adAddress, string account, string password)
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)        
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码){
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            DirectoryEntry entry 
= new DirectoryEntry(adAddress, account, password);
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            DirectorySearcher mySearcher 
= new DirectorySearcher(entry);
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            mySearcher.Filter 
= "(objectClass=user)";
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            mySearcher.SearchScope 
= SearchScope.Subtree;
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            DataTable dt 
= MakeTable();
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            DataRow dr;
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            
try
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码){
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)                SearchResultCollection results 
= mySearcher.FindAll();
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)                
foreach (SearchResult result in results)
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)                
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码){
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)                    dr 
= dt.NewRow();
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)                    
foreach (DictionaryEntry de in GetADInfo())
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)                    
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码){
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)                        dr[de.Key.ToString()] 
= GetProperty(result, de.Value.ToString());
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)                    }

AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)                    dt.Rows.Add(dr);
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)                }

AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            }

AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            
catch
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码){
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)                
throw new Exception("Can't connect to Active Directory.");
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            }

AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            DataSet ds 
= new DataSet();
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            ds.Tables.Add(dt);
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            
return ds;
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)        }

AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)        
private static string GetProperty(SearchResult searchResult, string PropertyName)
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)        
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码){
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            
if(searchResult.Properties.Contains(PropertyName))
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码){
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)                
return searchResult.Properties[PropertyName][0].ToString() ;
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            }

AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            
else
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码){
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)                
return string.Empty;
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            }

AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)        }

AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)        
private static DataColumn MakeColumn(string name)
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)        
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码){
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            DataColumn column 
= new DataColumn();
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            column.DataType 
= System.Type.GetType("System.String");
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            column.ColumnName 
= name;
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            
return column;
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)        }

AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)        
private static DataTable MakeTable()
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)        
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码){
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            DataTable adTable 
= new DataTable();
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            
foreach (DictionaryEntry de in GetADInfo())
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码){
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)                adTable.Columns.Add(MakeColumn(de.Key.ToString()));
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            }

AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            
return adTable;
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)        }

AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)        
private static Hashtable GetADInfo()
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)        
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码){
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            Hashtable table 
= new Hashtable();
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            table.Add(
"Account""cn");
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            table.Add(
"FirstName""givenName");
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            table.Add(
"LastName""sn");
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            table.Add(
"Company""company");
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            table.Add(
"PhoneNumber""telephoneNumber");
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            table.Add(
"Fax""facsimileTelephoneNumber");
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            table.Add(
"Email""mail");
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            table.Add(
"Address""homePostalAddress");
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            table.Add(
"ZipCode""postalCode");
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            
return table;
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)        }

AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)    }
然后调用此方法:
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)DataSet ds = ADHelper.GetAllAccounts("LDAP://192.168.3.23""sa""sa");
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)dataGridView1.DataSource 
= ds.Tables[0].DefaultView;
如果需要增加一个数据列,比如Job,只需要增加一行代码就可以了
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)table.Add("Job""extensionAttribute8");
如果目前的需求只是得到AD中的数据,该数据以GridView的形式显示出来,这种方法还是可行的。但是一旦需求变化,改为AD中的数据显示在一个ListBox中,或者以一个树形结构显示出来,那么就需要增加两个方法public static ArrayList GetAllAccounts(string adAddress, string account, string password)和public static TreeNode GetAllAccounts(string adAddress, string account, string password),如果还需要其他的形式显示,这样的代码还需要修改这个ADHelp类,造成了代码大量冗余,代码很难进行维护。

二、多数据源的实现

首先定义一个IDataSource接口,让不同的数据源实现此接口
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)public interface IDataSource
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)    
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码){
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)        
void AddLine(UserInfo user);
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)        
object GetData();
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)    }
Grid数据源的实现
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)public class GridDataSource : IDataSource
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)    
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码){
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)        DataTable dt;
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)        
public GridDataSource()
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)        
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码){
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            dt 
= MakeTable();
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)        }

AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)        
public void AddLine(UserInfo user)
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)        
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码){
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            DataRow dr;
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            dr 
= dt.NewRow();
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            dr[UserInfo.ACCOUNT] 
= user.Account;
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            dr[UserInfo.FIRSTNAME] 
= user.FirstName;
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            dr[UserInfo.LASTNAME] 
= user.LastName;
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            dr[UserInfo.EMAIL] 
= user.Email;
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            dt.Rows.Add(dr);
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)        }

AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)        
public object GetData()
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)        
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码){
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            
return dt;
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)        }

AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)        
private DataColumn MakeColumn(string name)
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)        
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码){
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            DataColumn column 
= new DataColumn();
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            column.DataType 
= System.Type.GetType("System.String");
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            column.ColumnName 
= name;
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            
return column;
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)        }

AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)        
private DataTable MakeTable()
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)        
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码){
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            DataTable dTable 
= new DataTable();
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            dTable.Columns.Add(MakeColumn(UserInfo.ACCOUNT));
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            dTable.Columns.Add(MakeColumn(UserInfo.FIRSTNAME));
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            dTable.Columns.Add(MakeColumn(UserInfo.LASTNAME));
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            dTable.Columns.Add(MakeColumn(UserInfo.EMAIL));
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            
return dTable;
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)        }

AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)    }
List数据源的实现
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)public class ListDataSource : IDataSource 
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)    
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码){
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)        ArrayList list;
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)        
public ListDataSource() 
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)        
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码){
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            list 
= new ArrayList();
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)        }

AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)        
public void AddLine(UserInfo user)
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)        
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码){
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            list.Add(user.Account 
+ "----" + user.FirstName + "----" + user.LastName + "----" + user.Email);
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)        }

AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)        
public object GetData()
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)        
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码){
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            
return list;
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)        }

AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)    }
Tree数据源的实现
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)public class TreeDataSource : IDataSource
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)    
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码){
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)        TreeNode node;
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)        
public TreeDataSource()
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)        
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码){
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            node 
= new TreeNode();
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            node.Text 
= "Users";
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            node.ExpandAll();
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)        }

AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)        
public void AddLine(UserInfo user)
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)        
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码){
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            TreeNode newNode 
= new TreeNode();
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            newNode.Text 
= user.Account;
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            newNode.Nodes.Add(user.FirstName);
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            newNode.Nodes.Add(user.LastName);
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            newNode.Nodes.Add(user.Email);
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            newNode.ExpandAll();
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            node.Nodes.Add(newNode);
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)        }

AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)        
public object GetData()
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)        
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码){
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            
return node;
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)        }

AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)    }
然后,我们在定义一个类来管理这些数据源
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)public class ADManager
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)    
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码){
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)        
string adAddress;
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)        
string account;
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)        
string password;
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)        
public IList<UserInfo> users;
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)        
public ADManager(string adAddress, string account, string password)
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)        
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码){
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            
this.adAddress = adAddress;
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            
this.account = account;
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            
this.password = password;
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            GetUserData();
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)        }

AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)        
private IList<UserInfo> GetUserData()
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)        
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码){
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            users 
= new List<UserInfo>();
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            DirectoryEntry entry 
= new DirectoryEntry(adAddress, account, password);
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            DirectorySearcher mySearcher 
= new DirectorySearcher(entry);
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            mySearcher.Filter 
= "(objectClass=user)";
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            mySearcher.SearchScope 
= SearchScope.Subtree;
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            
try
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码){
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)                SearchResultCollection results 
= mySearcher.FindAll();
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)                UserInfo user;
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)                
foreach (SearchResult result in results)
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)                
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码){
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)                    user 
= new UserInfo();
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)                    user.Account 
= GetProperty(result, UserInfo.ACCOUNT_AD);
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)                    user.FirstName 
= GetProperty(result, UserInfo.FIRSTNAME_AD);
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)                    user.LastName 
= GetProperty(result, UserInfo.LASTNAME_AD);
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)                    user.Email 
= GetProperty(result, UserInfo.EMAIL_AD);
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)                    users.Add(user);
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)                }

AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            }

AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            
catch
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码){
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)                
throw new Exception("Can't connect to Active Directory.");
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            }

AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            
return users;
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)        }

AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)        
public object GetDataSource(DataSourceType type)
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)        
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码){
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            DataSourceFactory factory 
= new DataSourceFactory();
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            IDataSource source 
= factory.CreateDataSource(type);
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            
foreach (UserInfo user in users)
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码){
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)                source.AddLine(user);
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            }

AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)            
return source.GetData();
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)        }

AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)}
客户端访问也很简单,只需要知道访问的类型就行了
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)ADManager ad = new ADManager("LDAP://192.168.3.27""sa""sa");
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)dataGridView1.DataSource 
= ad.GetDataSource(DataSourceType.Grid);
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)listBox1.DataSource 
= ad.GetDataSource(DataSourceType.List);
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)treeView1.Nodes.Add((TreeNode)ad.GetDataSource(DataSourceType.Tree));

整个解决方案如下图所示:
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)

运行结果如下图所示:
AD(Active Directory)以不同的数据源显示数据的实现(包含源代码)


源代码下载:
地址一:  http://files.cnblogs.com/binbin1845/ADApplication.rar
地址二:  http://download.csdn.net/source/304545

转载于:https://www.cnblogs.com/binbin1845/archive/2007/12/10/989514.html