Я пытаюсь программно создать нового пользователя Active Directory, задав атрибуту sAMAccountName значение, превышающее 20 символов.
Когда я вызываю DirectoryEntry.CommitChanges(), я получаю ошибку:
00000523: SysErr: DSID-031A0FB6, problem 22 (Invalid argument), data 0
Если я попытаюсь создать нового пользователя, установив sAMAccountName меньше 20 символов, все будет работать.
Прежде чем кто-то скажет, что ограничение на sAMAccountName составляет 20 символов, я хочу отметить, что если я попытаюсь создать того же пользователя с sAMAccountName более 20 символов с помощью инструмента Windows "Active Directory Users and Computers", все работает. Я вижу новую запись в AD с помощью инструмента LDP, и эта запись имеет sAMAccountName более 20 символов.
Почему я не могу создать пользователя программно, используя .NET?
Ниже приведен код, который я использую:
Using objDirEnt As DirectoryEntry = New DirectoryEntry("LDAP://my.domain.com/cn=Users,dc=my,dc=domain,dc=com", "username", "Password", AuthenticationTypes.Secure Or AuthenticationTypes.Sealing)
Using usuario As DirectoryEntry = objDirEnt.Children.Add("CN=aaaaaa bbbbbbbbbb ccccccccc (aaaaaa.bbbbbb.ccccccccc)", "user")
usuario.Properties("sAMAccountName").Value = "aaaaaa.bbbbbb.ccccccccc"
usuario.Properties("userAccountControl").Value = AdsUserFlags.PasswordNotRequired
usuario.Properties("name").Value = "aaaaaa bbbbbbbbbb ccccccccc"
usuario.Properties("givenName").Value = "aaaaaa"
usuario.Properties("sn").Value = "bbbbbbbbbb ccccccccc"
usuario.CommitChanges()
End Using
End Using