/*------------------------------------------------------------------------------------
*Model Name: DomainOperate
*Effect: DomainOperate,Get Domain User and Get Domain Infomation
*Author: lingliu
*Create time: 2007.7.26
*--------------------------Modify Infomation record----------------------------------
* Time Operater Description
*-------------------------------------------------------------------------------------
*2007.7.26 lingliu create
*-----------------------------------------------------------------------------------*/
using System;
using System.Data;
using System.Collections.Generic;
using System.Text;
using System.DirectoryServices;
namespace Utility
{
public class DomainOperate
{
#region GetDomainList
/// <summary>
/// GetDomainList
/// </summary>
/// <returns>Domain Talbe</returns>
public static DataTable GetDomainList()
{
//Set DirectoryEntry info
DirectoryEntry root = new DirectoryEntry("WinNT:");
DirectoryEntries domains = root.Children;
domains.SchemaFilter.Add("domain");
//Create Datatable
DataTable dt = new DataTable("DomainList");
DataColumn dc = new DataColumn("DomainName");
dt.Columns.Add(dc);
DataRow mdr = dt.NewRow();
mdr["DomainName"] = "Please select domain";
dt.Rows.Add(mdr);
foreach (DirectoryEntry domain in domains)
{
DataRow dr = dt.NewRow();
dr["DomainName"] = domain.Name;
dt.Rows.Add(dr);
}
return dt;
}
#endregion
#region Get All Object By Domain
/// <summary>
/// Get All Object By Domain
/// </summary>
/// <param name="domain">Domain name</param>
/// <param name="userName">Name of Domain</param>
/// <param name="password">Password of Domain</param>
/// <param name="objectClass">Objece Class name: For Example:user,computer,domain eg.</param>
/// <returns>Objece Table</returns>
public static DataTable GetAllObjectByDomain(string domain, string userName, string password, string objectClass,ref string rtnMsg)
{
//Create DataTalbe
DataTable dt = new DataTable("DomainObject");
DataColumn dc = new DataColumn("ObjectName");
dt.Columns.Add(dc);
//Set DirectoryEntry Info
DirectoryEntry entry = new DirectoryEntry("LDAP://"+ domain +".com");
entry.Password = password;//password of domain admin
entry.Username = userName;//username of domain admin
DirectorySearcher mySearcher = new DirectorySearcher(entry);
mySearcher.Filter = ("(objectClass=" + objectClass + ")");//filter data
//Get Object Class Name
try
{
foreach (SearchResult resEnt in mySearcher.FindAll())
{
DataRow dr = dt.NewRow();
dr["ObjectName"] = resEnt.GetDirectoryEntry().Name.ToString().Remove(0, 3);
dt.Rows.Add(dr);
}
}
catch(Exception ex)
{
rtnMsg = ex.Message.ToString();
dt.Clear();
}
return dt;
}
#endregion
}
}