我正尝试以编程方式将用户添加到Active Directory,并且我一直遇到错误 - 无论我在创建帐户时出现“重复输入”错误,都会创建哪个用户。这是我使用的代码:启用AD帐户时出现重复输入错误
DirectoryEntry NewUser = AD.Children.Add("CN=" + username, "User");
NewUser.CommitChanges();
//Add user information
NewUser.Invoke("SetPassword", password);
NewUser.Properties["givenName"].Value = FirstName;
NewUser.Properties["sn"].Value = LastName;
NewUser.Properties["mail"].Value = email;
NewUser.Properties["userPrincipalName"].Value = username + @"domainname";
NewUser.Properties["userAccountControl"].Add(0x200);//enable account
NewUser.CommitChanges();
当我注释掉改变userAccountControl的行了,一切工作正常。我甚至试图创建一个新的条目,并使用此代码修改它:
DirectoryEntry editUser = getUserEntry(username);
editUser.Properties["userAccountControl"].Add(0x200);//enable account
editUser.CommitChanges();
但仍然会抛出相同的错误。 getUserEntry只是从给定用户名的AD中抓取目录条目。任何人都可以看到为什么在这种情况下会出现重复输入错误的原因?
从我看来,似乎你没有设置'samAccountName'的任何值 - 需要设置,并且需要对每个用户帐户都是唯一的 – 2011-06-13 15:53:19
我认为如果你不添加sAMaccountName它自动设置为唯一的ID。如果我注释掉启用帐户行,被禁用的帐户都有一个唯一的sAMAccount名称(我直接在AD中查看),例如: $ V31000-64AQ2483EE3G,$ 341000-ACDLI5Q4HRVB等... – 2011-06-13 15:57:08