Мне нужно создать нового пользователя в Active Directory. Я нашел несколько примеров, например:
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);
}
}
}
}
Когда я запускаю этот код, я не получаю никаких ошибок, но новый пользователь не создается.
Учетная запись, с которой я запускаю тест, имеет достаточные привилегии для создания пользователя в целевой организационной единице.
Я что-то упустил (возможно, какой-то обязательный атрибут объекта пользователя)?
Любые идеи, почему код не дает исключений?
ИЗМЕНИТЬ
Для меня работали следующие:
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();
Таким образом, на самом деле было несколько проблем:
-
CommitChanges
должен быть вызван наuser
(спасибо Rob) - Политика паролей предотвращала создание пользователя (спасибо Marc)