【发布时间】:2010-01-12 08:59:39
【问题描述】:
我只有一个用户名,没有任何密码。我只想检查Active Directory 中是否存在此用户名。我该怎么办?
【问题讨论】:
-
您应该始终将语言添加到标签列表中;)
标签: c# authentication active-directory directoryservices
我只有一个用户名,没有任何密码。我只想检查Active Directory 中是否存在此用户名。我该怎么办?
【问题讨论】:
标签: c# authentication active-directory directoryservices
如果您使用的是 .NET 3.5,则可以使用 System.DirectoryServices.AccountManagement 功能。您的代码如下所示:
// create a "principal context" - e.g. your domain (could be machine, too)
PrincipalContext pc = new PrincipalContext(ContextType.Domain, "YOURDOMAIN");
UserPrincipal user = UserPrincipal.FindByIdentity(pc, "username");
bool userExists = (user != null);
这应该可以解决问题 ;-)
有关 S.DS.AM 的更多详细信息,请参阅这篇出色的 MSDN 文章:
Managing Directory Security Principals in the .NET Framework 3.5
【讨论】:
试试这个:
string strDomain = DOMAINNAME;
string strUserId = USERNAME;
string strPath = "LDAP://DC=" + strDomain.Trim() + ",DC=com";
DirectoryEntry de = new DirectoryEntry(strPath);
DirectorySearcher deSearch = new DirectorySearcher(de);
deSearch.Filter = "(&(objectClass=user)(SAMAccountName=" + strUserId.Trim() + "))";
SearchResult results = deSearch.FindOne();
if ((results == null))
{
//No User Found
}
else
{
//User Found
}
【讨论】:
您可以将DirectoryEntry 类用于此类任务。在此处查看Exists-方法:http://msdn.microsoft.com/en-us/library/system.directoryservices.directoryentry.exists.aspx
【讨论】: