C# 启用AD帐户时出现重复输入错误

C# 启用AD帐户时出现重复输入错误,c#,active-directory,active-directory-group,C#,Active Directory,Active Directory Group,我试图以编程方式将用户添加到Active Directory,但我一直遇到一个错误-无论我创建什么用户,只要我启用该帐户,就会抛出一个“重复条目”错误。这是我正在使用的代码: DirectoryEntry NewUser = AD.Children.Add("CN=" + username, "User"); NewUser.CommitChanges(); //Add user information NewUser.Invoke("SetPassword", password); NewU

我试图以编程方式将用户添加到Active Directory,但我一直遇到一个错误-无论我创建什么用户,只要我启用该帐户,就会抛出一个“重复条目”错误。这是我正在使用的代码:

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中获取目录项。有人知道在这种情况下会出现重复输入错误的原因吗?

您是否可以尝试替换为:

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

您可能知道某些属性可以是多值的,
userAccountControl
不能,但在您的代码中,这就是您试图做的,我的意思是多值。在我的代码中,我只分配了一个新值(它将在vue的纯LDAP点上起到替换作用)。

从我看来,您似乎没有为需要设置的
samAccountName设置任何值,每个用户帐户都需要唯一。我想如果不添加sAMaccountName,它会自动设置为唯一ID。如果我注释掉启用帐户行,则禁用的帐户都有唯一的sAMAccount名称(我直接在AD中查找),例如:$V31000-64AQ2483EE3G、$341000-ACDLI5Q4HRVB等。。。