DeMue Geschrieben 17. Februar 2009 Geschrieben 17. Februar 2009 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? Zitieren
DeMue Geschrieben 17. Februar 2009 Autor Geschrieben 17. Februar 2009 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; } Zitieren
U-- °LoneWolf° Geschrieben 23. Februar 2009 Geschrieben 23. Februar 2009 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" ); Zitieren
Empfohlene Beiträge
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.