Potrzebuję utworzyć nowego użytkownika w Active Directory. Znalazłem kilka przykładów takich jak:Utwórz użytkownika Active Directory w .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);
}
}
}
}
Po uruchomieniu tego kodu nie otrzymuję żadnych błędów, ale nie utworzono nowego użytkownika.
Konto, na którym przeprowadzam test, ma wystarczające uprawnienia do utworzenia użytkownika w docelowej jednostce organizacyjnej.
Czy brakuje mi czegoś (ewentualnie jakiegoś wymaganego atrybutu obiektu użytkownika)?
Jakieś pomysły, dlaczego kod nie podaje wyjątków?
EDIT
Następujące pracował dla mnie:
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();
Tak było rzeczywiście kilka problemów:
CommitChanges
musi być wywoływana nauser
(Dzięki Rob)- Zasady haseł uniemożliwiały utworzenie użytkownika (dzięki Marc)
Dobry połów !! :-) –
moc czytania "podręczników" w akcji :) – balexandre