活动目录(Active Directory)是从一个数据存储开始的,它采用了类似Exchange Server的数据存储,所以被称为Extensible Storage Service (ESS)。其特点是不需要事先定义数据库的参数,可以做到动态地增长,性能非常优良。这个数据存储之上已建立索引的,可以方便快速地搜索和定位。活动目录的分区是(Domain),一个域可以存储上百万的对象。域之间还有层次关系,可以建立域树和域森林,无限地扩展。

活动目录充分体现了微软产品的”ICE”,即集成性(Integration),深入性(Comprehensive),和易用性(Ease of Use)等优点。活动目录是一个完全可扩展,可伸缩的目录服务,既能满足商业ISP的需要,又能满足企业内部网和外联网的需要。

在.Net环境下操纵活动目录非常容易,其中提供了很多封装好的类用来操纵活动目录,这些类都存放在System.DirectoryServicess名称空间里。本文简要介绍一下如何使用这些DirectorySearcher类来读取活动目录中的信息。

using (DirectoryEntry entry = new DirectoryEntry())
{
//entry.Path ="LDAP://域";
DirectorySearcher mySearcher = new DirectorySearcher(entry);
mySearcher.SearchScope = SearchScope.Subtree;
mySearcher.ServerTimeLimit = TimeSpan.FromSeconds();
//mySearcher.ClientTimeout = TimeSpan.FromSeconds(1000);
//默认的搜索结果最大数为1000,通过设置pagesize 属性来解决
mySearcher.PageSize = ;
//mySearcher.ServerTimeLimit = 500;
//mySearcher.SizeLimit = 10000;
mySearcher.Filter = "(&(objectClass=user)(|(sAMAccountName=T*)(sAMAccountName=A*)(sAMAccountName=M*)(sAMAccountName=K*)(sAMAccountName=Z*)))";
//mySearcher.Filter = "(objectClass=user)";
string enno = string.Empty;//工号
string enemail = string.Empty;//邮箱
foreach (SearchResult resEnt in mySearcher.FindAll())
{
enno = string.Empty;//工号
enemail = string.Empty;//邮箱
try
{
DirectoryEntry user = resEnt.GetDirectoryEntry();
if (user.Properties.Contains("sAMAccountName"))
{
enno = user.Properties["sAMAccountName"][].ToString();
}
if (user.Properties.Contains("mail"))
{
enemail = user.Properties["mail"][].ToString();
}
}
finally { }
}
}

程序注解:

◆程序开始,实例化了一个DirectoryEntry类,其构造函数的参数是""; ◆然后又实例化了一个C# DirectorySearcher类,用来查询DirectoryEntry域中活动目录中的信息 ◆C# DirectorySearcher类的Filter属性用来设置查询的过滤条件,一般有以下三种: 1. objectClass=organizationalUnit 查询条件是所有的组织单元(OU) 2. objectClass=group 查询条件是所有的组(GROUP) 3. objectClass=user 查询条件是所有的用户(USER) 当然还可以设置其他的过滤条件,而且可以使用逻辑运算符,详情请参加MSDN ◆C# DirectorySearcher类的Findall方法用来递归的查找所有符合条件的对象。其返回结果是一个SearchResult类型的对象,这是一个集合类型。 ◆用Foreach语句访问集合中的所有对象,获得对象的信息。

最新文章

  1. Oracle逻辑迁移某业务用户及数据
  2. html5中新增非主体结构元素
  3. JS 获取FileUpload1控件地址
  4. 【转】分布式数据层 TDDL 来自:阿里巴巴
  5. undefined和void
  6. TortoiseSVN文档
  7. C++ algorithm 里的sort函数应用
  8. Ecshop实现仿Taobao地区运费模板
  9. js选中checkbox赋值给文本框
  10. tableview: 实现tableview 的 section header 跟随tableview滑动
  11. 建立qemu桥接的网络连接
  12. python_基础学习_01_按行读取文件的最优方法
  13. jsp页面根据当前时间和定义时间差计算动态倒计时
  14. sqlserver 经典入门基础书籍
  15. gRPC 在 Python中的应用
  16. 使用Charles抓取APP之HTTPS请求
  17. docker学习系列(二):使用Dockerfile创建自己的镜像
  18. Appium1.6启动iOS真机
  19. SpringBoot整合Mybatis之xml
  20. NuGet套件还原步骤(以vs2012为例)

热门文章

  1. QBXT Day 5图论相关
  2. Struts2测试题
  3. 阶段3 1.Mybatis_01.Mybatis课程介绍及环境搭建_01.mybatis课程介绍
  4. JVM监控工具之JProfiler
  5. frewalld假端口
  6. flultter listview异常type '(BuildContext, int) => dynamic' is not a subtype of type '(BuildContext, int) => Widget'
  7. xshell简单配置(文件上传和下载)
  8. Git配置用户名、邮箱
  9. 阿里云 Centos7 部署 Django 项目
  10. anr以及nlp语音自动化测试方案