在开始之前,我想说明一下,我可以使用DirectoryServices名称空间来实现这一点。我只想知道如何在不使用DirectoryServices的情况下实现我的以下问题。
我尝试做的是使用DirectoryServices.AccountManagement.UserPrincipal类对用户帐户进行部分名称搜索。问题是,我希望获得以下属性: EmailAddress、GivenName、MiddleName、SurName等。注意:我要查找的所有属性都在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进行部分名称搜索并获取未在主体数据类型中公开的属性?或者这是不可能的?
发布于 2014-07-30 02:59:56
不能将主体对象转换为UserPrincipal对象吗?也许可以捕获无效的强制转换。
return searcher.FindAll().Cast<UserPrincipal>();主体似乎是一个抽象基类http://msdn.microsoft.com/en-us/library/system.directoryservices.accountmanagement.principal(v=vs.110).aspx
https://stackoverflow.com/questions/25022799
复制相似问题