0

ユーザー名が Active Directory に存在するかどうかを確認したいですか? それに応じて、コードを実行する必要があります。

ドメインとユーザー名があります。DirectorySearcher を使用してパスワードなしで Active Directory にユーザー名が存在するかどうかを確認する方法。

4

2 に答える 2

1

プロセスは Active Directory ユーザーの下で実行する必要があります。それ以外の場合は、PrincipalContext を作成するときに Active Directory ユーザーの資格情報も提供する必要があります。これは、userName でユーザーを検索する単純なコードです。

  var context = new PrincipalContext(ContextType.Domain, "yourDomainHost");

  var userInfo = UserPrincipal.FindByIdentity(context, userName);

編集:

ディレクトリサーチャーを使用する必要がある場合は、次の方法を試すことができます。

     bool ContainsUser(string domain, string userName)
    {
        string ldapBase = string.Format("LDAP://{0}", domain);

        // in case if process is not running under AD user use: new DirectoryEntry(ldapBase, "userName", "password")
        using (var entry = new DirectoryEntry(ldapBase)) 
        {
            using (var searcher = new DirectorySearcher(entry))
            {
                searcher.Filter = string.Format("(sAMAccountName={0})", userName);
                return searcher.FindOne() != null;
            }
        }
    }
于 2013-08-26T11:53:27.570 に答える
0

このアプローチを試すことができます:

DirectoryEntry entry = new DirectoryEntry("LDAP://DomainName");
DirectorySearcher dsearcher = new DirectorySearcher(entry);
dsearcher.Filter = "samaccountname=" + username;
SearchResult result = dsearcher.FindOne();
if(null!=result) //User Exists
{
  //Do your stuff here
}
else //User Not Exists
{
  //Do your stuff here
}

上記のコードは、AD サーバーが匿名アクセスを許可していることを前提としています。

于 2013-08-26T12:41:00.093 に答える