12

電子メール アドレスで ActiveDirectory ユーザーをクエリするにはどうすればよいですか? 特定のユーザーは、john.smite@acme.com と jsmith@acme.com の両方など、複数の電子メールを持つことができます。特定の電子メールについて、A/D ユーザーを取り戻すにはどうすればよいですか?

私はC#でプログラミングしています。

4

3 に答える 3

25

次のコードで AD を検索できます。

    DirectoryEntry adEntry = null;

    private void SetADInfoAndCredentials()
    {
        adEntry = new DirectoryEntry("LDAP://" + ad_textBox.Text);
        adEntry.Username = user_textBox.Text;
        adEntry.Password = pw_textBox.Text;
    }

    private void SearchForMailInAD()
    {
        DirectorySearcher adSearcher = new DirectorySearcher(adEntry);
        adSearcher.Filter = ("mail=" + mail_textBox.Text);
        SearchResultCollection coll = adSearcher.FindAll();
        foreach (SearchResult item in coll)
        {
            foundUsers_listBox.Items.Add(item.GetDirectoryEntry());
        }
    }

€: これは、すべてのメール アドレスをホストする proxyAddresses でメール アドレスを検索します。

    public static SearchResultCollection FindAccountByEmail(string pEmailAddress)
    {
        string filter = string.Format("(proxyaddresses=SMTP:{0})", email);

        using (DirectoryEntry gc = new DirectoryEntry("LDAP:"))
        {
            foreach (DirectoryEntry z in gc.Children)
            {
                using (DirectoryEntry root = z)
                {
                    using (DirectorySearcher searcher = new DirectorySearcher(root, filter, new string[] { "proxyAddresses", "objectGuid", "displayName", "distinguishedName" }))
                    {
                        searcher.ReferralChasing = ReferralChasingOption.All;
                        SearchResultCollection result = searcher.FindAll();

                        return result;
                    }
                }
            }
        }
        return null;
    }
于 2013-09-06T13:19:36.810 に答える