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

Messages postés
125
Date d'inscription
dimanche 28 février 2010
Dernière intervention
21 juin 2015
- - Dernière réponse : theflayer
Messages postés
125
Date d'inscription
dimanche 28 février 2010
Dernière intervention
21 juin 2015
- 21 août 2012 à 16:50
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.
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
Messages postés
125
Date d'inscription
dimanche 28 février 2010
Dernière intervention
21 juin 2015
3
Merci
 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

Merci theflayer 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 100 internautes ce mois-ci

Commenter la réponse de theflayer
Messages postés
125
Date d'inscription
dimanche 28 février 2010
Dernière intervention
21 juin 2015
0
Merci
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
Commenter la réponse de theflayer

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.