前些日子写了一个关于活动目录(Active Directory)的查询,总结了一些:开发语言是ASP.NET
1.首先记得要引用:using System.DirectoryServices;
using System.DirectoryServices.ActiveDirectory;
2.我把活动目录的路径 登陆的用户名 密码放到了Web.config文件中
<appSettings>
<add key="ADPath" value="LDAP://xa.xb/OU=xxx1,OU=xxxx2,OU=xxxxx3,DC=xa,DC=xb"/>
其中xa.xb为你的域所在地址 OU=xxx1,OU=xxxx2为你的层级目录,且xxx1是最小的目录
<add key="ADUser" value="xxxx"/> 值为登陆这个域的用户名
<add key="ADPassWord" value="xxxxx"/>值为登陆这个域的密码
</appSettings>
3进行数据的查找,并把结果保存到一个表中
public static DataTable GetTable()
{
DataTable dt = new DataTable();//创建一个表
try
{
DirectoryEntry myComany = new DirectoryEntry();
myComany.Path = ConfigurationManager.AppSettings["ADPath"];//路径
myComany.Username = ConfigurationManager.AppSettings["ADUser"];//用户名
myComany.Password = ConfigurationManager.AppSettings["ADPassWord"];//密码
创建查找
DirectorySearcher mySearcher = new DirectorySearcher();
mySearcher.SearchRoot = myComany;
mySearcher.Filter = "(objectClass=user)";
mySearcher.SearchScope = SearchScope.Subtree;
mySearcher.PropertiesToLoad.Add("name");//所需属性
mySearcher.PropertiesToLoad.Add("SAMAccountName");//;所需属性
mySearcher.PropertiesToLoad.Add("distinguishedNAME");//所需属性
SearchResultCollection myCollcet = mySearcher.FindAll();
dt.Columns.Add("姓名", typeof(string));
dt.Columns.Add("邮箱", typeof(string));
dt.Columns.Add("单位", typeof(string));
foreach (SearchResult myResult in myCollcet)
{
ResultPropertyCollection myProColl = myResult.Properties;
DataRow dr = dt.NewRow();
dr["姓名"] = myProColl["name"][0];
dr["邮箱"] = myProColl["SAMAccountName"][0]";
string[] sdis = myProColl["distinguishedNAME"][0].ToString().Split(',');
dr["单位"] = sdis[1].Remove(0,3);
dt.Rows.Add(dr);
}
}
catch(Exception ex)
{
System.Web.HttpContext.Current.Response.Write("<Script Language='JavaScript'>alert('" + ex.Message.Trim('\n', '\r') + "')</Script>");
}
return dt;
}
4.数据绑定
myTable = GetTable();
GridView1.Datasoure=myTable;
GridView1.DataBind();
这就是个比较简单的活动目录的应用,希望对大家有用。