7

私は他の2つのスレッドをチェックし、1つのコードを使用しましたが、リストにデータが入力されることはありません. Active Directory ユーザーとコンピューターを開き、[組織] の下のマネージャーに移動すると、直属の部下のリストが表示されます。

私がやろうとしているのは、コードを通じてそのリストにアクセスすることです。これまでに見つけたものは何も機能していないようです。

    public void GetDirectoryEntry(string adUserName)
    {
        DirectoryEntry de = new DirectoryEntry("LDAP://server.server.com");

        DirectorySearcher ds = new DirectorySearcher(de);
        ds.Filter = "(&((&(objectCategory=Person)(objectClass=User)))(samaccountname=" + adUserName + "))";
        ds.SearchScope = SearchScope.Subtree;

        SearchResult rs = ds.FindOne();

        string distinguishedName = rs.Properties["distinguishedName"][0].ToString();
        string department = rs.Properties["department"][0].ToString();
        string manager = rs.Properties["manager"][0].ToString();
        //string temp3 = rs.Properties["Reports"][0].ToString();

    }

Reportsandを使用してみましたがdirectReports、両方ともエラーが発生しません。

このメソッドは、ログインしているユーザーまたは私が渡したユーザーをロードします。すべてのプロパティにアクセスできますが、直属の部下にはアクセスできないようです。

私は何が欠けていますか?

答えを見つけました:

foreach (string objProperty in rs.Properties["DirectReports"])
            {
                isManager = true;
                string emp = objProperty.ToString();
                string[] setp = new string[1];
                setp[0] = "DC"; //If your users are in a OU use OU 

                emp = emp.Split(setp, StringSplitOptions.None)[0];
                emp = emp.Replace("CN=", "");
                emp = emp.TrimEnd(',');
                emp = emp.Replace("\\, ", ", ");
                emp = emp.Split(',')[0];
                //emps.Add(emp);
            }
4

1 に答える 1

6
foreach (string objProperty in rs.Properties["DirectReports"])
            {
                isManager = true;
                string emp = objProperty.ToString();
                string[] setp = new string[1];
                setp[0] = "DC"; //If your users are in a OU use OU 

                emp = emp.Split(setp, StringSplitOptions.None)[0];
                emp = emp.Replace("CN=", "");
                emp = emp.TrimEnd(',');
                emp = emp.Replace("\\, ", ", ");
                emp = emp.Split(',')[0];
                //emps.Add(emp);
            }
于 2013-05-20T22:24:51.113 に答える