1

私はここで夢中になっています、私は本当にいくつかの助けに感謝します!DirectoryEntryクラスを使用してActiveDirectoryからユーザー名などを取得したいだけです。

userprincipleを使用しましたが、うまく機能しますが、取得する必要のあるプロパティ(ユーザーのマネージャー)はDirectoryEntryでのみ使用できます。

私の問題は、オンラインで多くのことを調べ、そこからコードを取得したことですが、何らかの理由で機能せず、常にNullを返します。ここに例があります:

public static DirectoryEntry GetUser(string UserName)
{
    //create an instance of the DirectoryEntry
    DirectoryEntry de = new DirectoryEntry("LDAP://" + "OU=AnotherOU,OU=xx,OU=Testvironments,DC=abc,DC=local");

    //create instance fo the direcory searcher
    DirectorySearcher deSearch = new DirectorySearcher(de);

    deSearch.SearchRoot = de;
    //set the search filter
    deSearch.Filter = "(&(objectCategory=user)(cn=" + UserName + "))";
    //deSearch.SearchScope = SearchScope.Subtree;

    //find the first instance
    SearchResult results = deSearch.FindOne();

    //if found then return, otherwise return Null
    if (results != null)
    {
        //de= new DirectoryEntry(results.Path,ADAdminUser,ADAdminPassword,AuthenticationTypes.Secure);
        //if so then return the DirectoryEntry object
        return results.GetDirectoryEntry();
    }
    else
    {
        return null;
    }
}

このコードがnullを返す理由がわかりません。

前もって感謝します。

4

2 に答える 2

2

あなたはこのように試すことができます

//create instance for directory entry
DirectoryEntry de = new DirectoryEntry("LDAP://" + "OU=AnotherOU,OU=xx,OU=Testvironments,DC=abc,DC=local");

//create instance fo the directory searcher
DirectorySearcher deSearch = new DirectorySearcher(de );;

//set the search filter
deSearch.Filter = "(&(objectClass=user)(|(SAMAccountName=" + UserName+ ")(givenName=" + UserName+ ")(name=" + UserName+ ")(SN=" + UserName+ "))";

//find the first instance
SearchResult results = deSearch.FindOne();

//if found then return, otherwise return Null
if (results != null)
{
    //The desired property you want , you can extract in this way.
   DomainName = results .Properties["SamAccountName"][0].ToString();
   return domainName
}
else
{
    return null;
}

これがあなたが探しているものであることを願っています。

于 2012-09-27T14:36:48.657 に答える
0

、、、または属性cnが必要samAccountnameですか?は従来の(NT 4.0)スタイルのユーザー名であり、通常は名と姓であり、電子メールアドレス(user@domain.name)と同様の形式です。displayNameuserPrincipalNamesamAccountNamedisplayNameuserPrincipalName

いずれにせよ、さまざまなクエリをテストする場合は、ldp.exeなどのインタラクティブなLDAPクエリツールを使用してください。コードで試すよりもはるかに簡単でしょう。

于 2012-09-27T14:31:56.350 に答える