0

プログラムでActiveDirectoryにユーザーを追加しようとしていますが、エラーが発生し続けます。アカウントを有効にするとすぐにどのユーザーを作成しても、「重複エントリ」エラーがスローされます。これは私が使用しているコードです:

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からディレクトリエントリを取得するだけです。この場合、重複エントリエラーが発生する理由を誰かが理解できますか?

4

1 に答える 1

1

次のように置き換えてみてください:

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

userAccountControl 一部の属性は複数値にすることができますが、できないことはご存知でしょうが、コードでは、それを実行しようとしています。つまり、複数値にすることを意味します。私のコードでは、新しい値を割り当てるだけです(純粋なLDAPポイントのvueで置換を実行します)。

于 2011-06-13T16:39:34.453 に答える