如何在Active Directory中找到具有GUID(objectGUID)参数的用户

时间:2012-07-23 13:43:35

标签: c# asp.net active-directory ldap directoryentry

在我的ASP.NET应用程序中,我从Active Directory获取信息。我必须使用GUID信息获取有关用户的信息(例如:a28a6a34dsfdsf57d9e54f945a241),但我不知道如何使用右侧过滤器进行此搜索:/

例如,如果我搜索用户姓氏:

DirectoryEntry Entry = new DirectoryEntry("LDAP://" + "Domain");

            string filter = "(&(objectClass=user)(objectCategory=person)(cn=" + txtBenutzer.Text + "*))";

            DirectorySearcher Searcher = new DirectorySearcher(Entry, filter);

            var q = from s in Searcher.FindAll().OfType<SearchResult>()
                    select new
                    {
                        //GetProperty(s, "objectGUID"),
                        Benutzer = GetProperty(s, "sAMAccountName"),
                        eMail = GetProperty(s, "mail"),
                        Vorname = GetProperty(s, "givenName"),
                        Nachname = GetProperty(s, "sn"),
                        Telefon = GetProperty(s, "telephoneNumber"),
                        UserID = s.GetDirectoryEntry().NativeGuid

                    };

            this.myListView.DataSource = q;
            this.myListView.DataBind();

现在我需要一个带GUID的过滤器,我可以在AD中找到唯一的用户。这个搜索的GUID我有一个字符串UserID = Session [“UserID”]。toString()

塔拉索夫

1 个答案:

答案 0 :(得分:20)

您不需要搜索,如果您知道GUID,则可以直接绑定到该对象,例如

var user = new DirectoryEntry("LDAP://<GUID=119d0d80-699d-4e81-8e4e-5477e22ac1b3>");

(替换为您的实际ObjectGUID)。

检查此MSDN条目:Using ObjectGUID to Bind to an Object