Если вы используете .NET 3.5 или можете обновиться до него - материал LDAP был значительно улучшен с введением пространства имен System.DirectoryServices.AccountManagement
.
Он содержит среди прочего классы, такие как UserPrincipal
, которые предлагают большинство наиболее часто используемых атрибутов LDAP в качестве свойств. Используя PrincipalSearcher
и QBE (Query-by-example), вы можете очень легко найти тех пользователей (или других объектов), которые вас интересуют, и связать их с сеточным представлением ASP.NET.
Чтобы узнать больше о новом материале .NET 3.5, прочитайте эту прекрасную статью в журнале MSDN:
Управление принципами безопасности каталогов в .NET Framework 3.5 - выпуск за январь 2008 г.
Обновление: Используя интерфейс .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
непосредственно к DataGridView
или чему-либо и выбрать те свойства для ваших столбцов, которые вы ищете:
- Имя = UserPrincipal.GivenName
- Фамилия = UserPrincipal.Sameame
- Имя входа до Windows 2000 = UserPrincipal.SamAccountName
- Имя = Имя
- Type = ?? Что вы здесь имеете в виду ??