Ich versuche, programmgesteuert einen neuen Active Directory-Benutzer zu erstellen, indem ich das Attribut sAMAccountName mit einem Wert größer als 20 Zeichen einstelle.
Wenn ich DirectoryEntry.CommitChanges() aufrufe, erhalte ich den Fehler:
00000523: SysErr: DSID-031A0FB6, Problem 22 (Ungültiges Argument), Daten 0
Wenn ich versuche, einen neuen Benutzer zu erstellen und den sAMAccountName kleiner als 20 Zeichen einstelle, funktioniert alles.
Bevor jemand sagt, dass die Grenze für den sAMAccountName bei 20 Zeichen liegt, möchte ich darauf hinweisen, dass, wenn ich versuche, denselben Benutzer mit einem sAMAccountName von mehr als 20 Zeichen mit dem Windows-Tool "Active Directory-Benutzer und -Computer" zu erstellen, alles funktioniert. Ich kann den neuen Eintrag im AD mit dem LDP-Tool sehen und der Eintrag hat den sAMAccountName mit mehr als 20 Zeichen.
Warum kann ich den Benutzer nicht programmatisch mit .NET erstellen?
Nachstehend finden Sie den von mir verwendeten Code:
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