Modifier les groupes d'un utilisateur dans Active Directory [Résolu]

Signaler
Messages postés
125
Date d'inscription
dimanche 28 février 2010
Statut
Membre
Dernière intervention
21 juin 2015
-
Messages postés
125
Date d'inscription
dimanche 28 février 2010
Statut
Membre
Dernière intervention
21 juin 2015
-
Salut tous le monde,

Petite question,

je crée un utilisateur dans mon active directory mais certain points ne fonctionne pas.
-Le premier point est au niveau du login, il y en a 2 :

-le premier se nomme Nom d'ouverture de session de l'utilisateur (celui qui m’intéresse)
-Le second Nom d'ouverture de session de l'utilisateur (Antérieur à Win 2000) (celui qu'il me remplit)

Second problème ce sont mes groupes, quand je rajoute la ligne user.Properties["memberOf"].Add("Mon_Groupe");

Cela me renvoie une exception , comme quoi le serveur ne veut pas traiter cette action. Si je ne la met pas, mise a part le problème du login ça fonctionne parfaitement. Voici mon code :



     DirectoryEntry Ldap = new DirectoryEntry(@"LDAP://serveur3", "Administrateur", "Mon_Pass");
                    DirectoryEntry user = Ldap.Children.Add("CN=" + sPrenom_b + " " + tNom.Text.ToUpper() +", CN=Users", "User");
                    user.Properties["sAMAccountName"].Add(tIdentifiant.Text.ToLower());
                    user.Properties["sn"].Add(tNom.Text.ToUpper());
                    user.Properties["givenName"].Add(sPrenom_b);
                    user.Properties["Mail"].Add(tMail.Text.ToLower());
                    user.Properties["Company"].Add("Ma_Boite");
                    user.Properties["description"].Add("Compte créé le : " + DateTime.Now.ToLongDateString());
                    user.CommitChanges();

                    user.Invoke("SetPassword", new object[] { tNom.Text.ToLower() });
                    user.Properties["userAccountControl"].Value = 0x0200; //active le compte avec le mode choisit (voir doc)
                    //user.Properties["memberOf"].Add("Mon_Groupe");
                    user.CommitChanges();



Merci de votre aide.

2 réponses

Messages postés
125
Date d'inscription
dimanche 28 février 2010
Statut
Membre
Dernière intervention
21 juin 2015
2
 string LDAPDomain = "LDAP://serveur3/CN=" + groupes + ",CN=Users,DC=xxx,DC=xx,DC=com";
                    DirectoryEntry Group = new DirectoryEntry(LDAPDomain, "Administrateur", "Mon_Pass");

                    //on ajoute l'utilisateur au groupe
                    Group.Invoke("Add", new Object[] { user.Path.ToString() });
                    Group.CommitChanges();
                    Group.Close();


Voila comme ça, ça fonctionne !! J'ajoute l'utilisateur au groupe juste après l'avoir crée.






-La constante d'une personne est la variable d'une autre.
-Il y a deux manières d'écrire des programmes sans erreurs. Seule la troisième marche
-Tout programme a (au moins) deux buts : celui pour lequel il a été écrit, et celui pour lequel il ne l'a pas
Messages postés
125
Date d'inscription
dimanche 28 février 2010
Statut
Membre
Dernière intervention
21 juin 2015
2
Salut, je reviens vers vous , car je n'ai toujours pas de solution.

j'ai essayé de m'y prendre autrement en essayant de modifier le groupe plutôt que l'utilisateur, mais ça n'est pas beaucoup plus efficace.


                    DirectoryEntry Ldap = new DirectoryEntry(@"LDAP://serveur3", "Administrateur", "Mon_Pass", AuthenticationTypes.Secure);

                    if (richTextBox1.Text != "")
                    {
                        for (int i = 0; i < richTextBox1.Lines.Length - 1; i++)
                        {
                            tab[i] = richTextBox1.Lines[i];
                            DirectorySearcher search = new DirectorySearcher(Ldap);
                            search.Filter = "(&(objectClass=group) (cn=" + tab[i] + "))";
                            SearchResult results = search.FindOne();
                            
                                                    
                            string group = results.Path;
                           
                            MessageBox.Show(group);

                            try
                            {
                                DirectoryEntry myGroup = new DirectoryEntry(group, "Administrateur", "Mon_Pass", AuthenticationTypes.Secure);
                                myGroup.Properties["Member"].Add("Jean DUPONT");//,CN=Users,DC=xxx,DC=xx,DC=com");
                                myGroup.Close();
                            }
                            catch (DirectoryServicesCOMException) { }
                         }
                    }



Si vous avez une idée.
Merci


-La constante d'une personne est la variable d'une autre.
-Il y a deux manières d'écrire des programmes sans erreurs. Seule la troisième marche
-Tout programme a (au moins) deux buts : celui pour lequel il a été écrit, et celui pour lequel il ne l'a pas