如果您使用的是 .NET 3.5,或者可以升级到它 - LDAP 的东西随着命名空间的引入而得到了极大的改进System.DirectoryServices.AccountManagement
。
它包含其他类,例如UserPrincipal
,它提供了大多数常用的 LDAP 属性作为属性。使用PrincipalSearcher
和 QBE(按示例查询),您可以非常轻松地找到您感兴趣的那些用户(或其他对象)并将它们绑定到 ASP.NET 网格视图。
要了解有关 .NET 3.5 新内容的更多信息,请阅读 MSDN 杂志上的这篇优秀文章:
在 .NET Framework 3.5 中管理目录安全主体 - 2008 年 1 月号
更新:使用 .NET 3.5 接口,您可以编写如下代码:
// define the content - domain name (second param) must be NetBIOS-style,
// third parameter is the container where to create the context for
PrincipalContext ctx = new PrincipalContext(ContextType.Domain, "ITLAB", "OU=UsersStudents,DC=dc,DC=itlab,DC=edu");
// define your "prototype" for the searcher - here: you want to search for
// users which have the .Enabled property set to true; you could define additional
// requirements here
UserPrincipal qbePrototype = new UserPrincipal(ctx);
qbePrototype.Enabled = true;
// create PrincipalSearcher based on that QBE prototype
PrincipalSearcher ps = new PrincipalSearcher(qbePrototype);
// find all matching Principals - in your case, those will be of type UserPrincipal
PrincipalSearchResult<Principal> results = ps.FindAll();
现在您应该能够将results
直接绑定到 aDataGridView
或其他东西,并为您正在寻找的列选择这些属性:
- 名字 = UserPrincipal.GivenName
- 姓氏 = UserPrincipal.Surname
- Windows 2000 之前的登录名 = UserPrincipal.SamAccountName
- 姓名 = 姓名
- 类型 = ?? 你在这里是什么意思??