Zum Inhalt springen

C# User zu einer Gruppe hinzufügen schlägt fehl (LDAP)


Empfohlene Beiträge

Geschrieben

Hallo,

ich versuche mit folgendem Code user, die in einer RichTextBox stehen zu einer Gruppe hinzuzufügen.

 

//Copy User to This Group

        private void button2_Click(object sender, EventArgs e)

        {


            string[] lines = richTextBox1.Lines;

            foreach (string str_User in lines)

            {


                //connect to AD

                DirectoryEntry dom = new DirectoryEntry("LDAP://xyz.org");


                DirectorySearcher src = new DirectorySearcher(dom, "(objectCategory=group)");

                src.Filter = "(&(objectCategory=group)(sAMAccountName=" + textBox2.Text + "))";

                foreach (SearchResult res in src.FindAll())

                {

                    DirectoryEntry group = new DirectoryEntry(res.Path);

                    if (!group.Properties["member"].Contains(str_User))

                    {

                        group.Properties["member"].Add(str_User);

                        group.CommitChanges();

                    }

                }



            }

Allerdings kommt die Exception bei "group.CommitChanges();"

Der Server kann die Anforderung nicht ausführen. (Ausnahme von HRESULT: 0x80072035)

Verweigert der Server das bestätigen, oder wie soll ich es verstehen?

Oder ist es ein Programmierfehler?

Geschrieben

Editieren war leider nicht möglich, hier der Code wie ich die Sachen in die RichTextbox schreibe:


 ArrayList GetADGroupUsers(string groupName)

        {

            SearchResult result;

            DirectoryEntry searchRoot = new DirectoryEntry("LDAP://xyz.org");

            DirectorySearcher search = new DirectorySearcher(searchRoot);

            search.Filter = String.Format("(cn={0})", groupName);

            search.PropertiesToLoad.Add("member");

            search.PropertiesToLoad.Add("samaccountname");

            result = search.FindOne();


            string memberList = "";

            ArrayList userNames = new ArrayList();

            if (result != null)

            {

                for (int counter = 0; counter <

                result.Properties["member"].Count; counter++)

                {

                    memberList = (string)result.Properties["member"][counter];


                    int indexChar = memberList.IndexOf(",");


                    string subString = memberList.Substring(0, indexChar);


                    int indexChar2 = memberList.IndexOf("=");


                    userNames.Add(subString.Substring(indexChar2 + 1, (subString.Length) - (indexChar2 + 1)));

                }

            }

            foreach (string User in userNames)

            {

                String username;

                username = User.ToString().Replace("\\", "");

                System.DirectoryServices.DirectoryEntry entry1 =

                new System.DirectoryServices.DirectoryEntry(

                "LDAP://xyz.org ");

                System.DirectoryServices.DirectorySearcher search1 = new

                System.DirectoryServices.DirectorySearcher(entry1);

                //Search Filter = Exchange Mailbox

                search1.Filter = "(&(objectClass=user)" +

                "(sAMAccountName=" + username + "))";

                //


                foreach (System.DirectoryServices.SearchResult userresult in search1.FindAll())

                {

                    richTextBox1.Text += userresult.GetDirectoryEntry().Properties["distinguishedName"].Value.ToString() + "\n";

                }


            }


            return userNames;

        }

Geschrieben

naja bin mir nicht ganz sicher aber ist der übergebene name auch dre login name?

also DOMAIN\USER ?

In einer anderen anwendung greife ich auf folgende paranmeter zurück

res.Properties[ "samAccountName" ][ 0 ]

res ist ein System.DirectoryServices.DirectorySearcher

alternativ sind noch diese werte interresant

Searcher.PropertiesToLoad.Add( "dn" );

Searcher.PropertiesToLoad.Add( "cn" );

Searcher.PropertiesToLoad.Add( "displayName" );

Searcher.PropertiesToLoad.Add( "sn" );

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...