Je dois créer un nouvel utilisateur dans Active Directory. J'ai trouvé plusieurs exemples comme les suivants:Créer un utilisateur Active Directory dans .NET (C#)
using System;
using System.DirectoryServices;
namespace test {
class Program {
static void Main(string[] args) {
try {
string path = "LDAP://OU=x,DC=y,DC=com";
string username = "johndoe";
using (DirectoryEntry ou = new DirectoryEntry(path)) {
DirectoryEntry user = ou.Children.Add("CN=" + username, "user");
user.Properties["sAMAccountName"].Add(username);
ou.CommitChanges();
}
}
catch (Exception exc) {
Console.WriteLine(exc.Message);
}
}
}
}
Lorsque j'exécute ce code je n'obtiens pas d'erreurs, mais aucun nouvel utilisateur n'est créé.
Le compte avec lequel j'exécute le test dispose de privilèges suffisants pour créer un utilisateur dans l'unité organisationnelle cible. Est-ce que je manque quelque chose (peut-être un attribut requis de l'objet utilisateur)?
Des idées pour lesquelles le code ne donne pas d'exceptions?
EDIT
Ce qui suit a fonctionné pour moi:
int NORMAL_ACCOUNT = 0x200;
int PWD_NOTREQD = 0x20;
DirectoryEntry user = ou.Children.Add("CN=" + username, "user");
user.Properties["sAMAccountName"].Value = username;
user.Properties["userAccountControl"].Value = NORMAL_ACCOUNT | PWD_NOTREQD;
user.CommitChanges();
Donc, il y avait en fait deux problèmes:
CommitChanges
doit être appeléuser
(merci Rob)- La politique de mot de passe empêchait la création de l'utilisateur (merci Marc)
Bonne prise !! :-) –
le pouvoir de lire "manuels" en action :) – balexandre