2011-06-13 39 views
0

我正尝试以编程方式将用户添加到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中抓取目录条目。任何人都可以看到为什么在这种情况下会出现重复输入错误的原因?

+0

从我看来,似乎你没有设置'samAccountName'的任何值 - 需要设置,并且需要对每个用户帐户都是唯一的 – 2011-06-13 15:53:19

+0

我认为如果你不添加sAMaccountName它自动设置为唯一的ID。如果我注释掉启用帐户行,被禁用的帐户都有一个唯一的sAMAccount名称(我直接在AD中查看),例如: $ V31000-64AQ2483EE3G,$ 341000-ACDLI5Q4HRVB等... – 2011-06-13 15:57:08

回答

1

你可以尝试更换:

DirectoryEntry editUser = getUserEntry(username); 
editUser.Properties["userAccountControl"][0] = (0x200);//enable account 
editUser.CommitChanges(); 

你可能知道,某些属性可以是多值,userAccountControl不能,但在你的代码,这就是你努力去做,我的意思是以多重价值。在我的代码中,我只是分配一个新值(它将在纯vue中的LDAP点上进行替换)。

+0

谢谢!这个窍门! – 2011-06-13 16:47:00

相关问题