用部分名称搜索UserPrincipal
本文关键字:搜索 UserPrincipal 用部 | 更新日期: 2023-09-27 18:15:23
在开始之前,我想明确说明,我可以使用DirectoryServices名称空间来完成此操作。我只是想知道如何实现我下面的问题不使用DirectoryServices。
我想做的是使用DirectoryServices.AccountManagement.UserPrincipal类对用户帐户进行部分名称搜索。问题是,我想获得以下属性:EmailAddress, GivenName, midlename,姓氏等。注意:我正在寻找的所有属性都暴露在UserPrincipal中。下面是一个使用UserPrincipal不进行部分名称搜索的示例。
using (UserPrincipal user = UserPrincipal.FindByIdentity(ctx, IdentityType.SamAccountName, userName))
{
return user;
}
从我读过的教程中,我可以使用以下代码进行部分名称搜索:
using (UserPrincipal user = new UserPrincipal(ctx))
{
user.SamAccountName = String.Format("*{0}*", userName);
using (PrincipalSearcher searcher = new PrincipalSearcher())
{
searcher.QueryFilter = user;
return searcher.FindAll();
}
}
这样做的问题是,当我迭代PrincipalSearcher集合(搜索器)时,它是Principal数据类型。Principal数据类型不包含上面提到的任何属性。
所以我的问题是,我如何使用UserPrincipal部分名称搜索并获得未在Principal数据类型中暴露的属性?或者这是不可能的?
不能将Principal对象转换为UserPrincipal对象吗?可能会捕获无效的类型转换。
return searcher.FindAll().Cast<UserPrincipal>();
Principal似乎是一个抽象基类http://msdn.microsoft.com/en-us/library/system.directoryservices.accountmanagement.principal (v = vs.110) . aspx