Bonjour,
Je travaille sur la création d'une page permettant de créer des utilisateurs dans l'AD. J'arrive à me connecter et à créer l'utilisateur, mais au moment d'invoker la méthode "SetPassword", j'obtiens l'erreur suivante :
Voici mon code pour créer l'utilisateur :Main Exception: Exception has been thrown by the target of an invocation.
Inner Exception: The filename, directory name, or volume label syntax is incorrect. (Exception from HRESULT: 0x8007007B)":null
L'erreur survient à cet endroit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49 public bool CreateUserAccount(string newUserName, string newUserPassword, string newUserLastName, string newUserFirstName, string newUserCompany, string newUserEmailAddress, string newUserDisplayName) { bool bCreationStatus = false; try { string connectionPrefix = this.LDAPPath; DirectoryEntry dirEntry = new DirectoryEntry(connectionPrefix, this.LDAPUser, this.LDAPPassword); DirectoryEntry newUser = dirEntry.Children.Add("CN=" + newUserName, "user"); // Feeds new user properties newUser.Properties[ADProperties.LASTNAME].Value = newUserLastName; newUser.CommitChanges(); newUser.Properties[ADProperties.FIRSTNAME].Value = newUserFirstName; newUser.CommitChanges(); newUser.Properties[ADProperties.DISPLAYNAME].Value = newUserDisplayName; newUser.CommitChanges(); newUser.Properties[ADProperties.LOGINNAME].Value = newUserName; newUser.CommitChanges(); newUser.Properties[ADProperties.COMPANY].Value = newUserCompany; newUser.CommitChanges(); newUser.Properties[ADProperties.EMAILADDRESS].Value = newUserEmailAddress; newUser.CommitChanges(); // oGUID = newUser.Guid.ToString(); newUser.Invoke("SetPassword", new object[] { newUserPassword }); newUser.CommitChanges(); this.SetAccountExpiresDate(newUser, DateTime.Now.AddMonths(+3)); newUser.CommitChanges(); dirEntry.Close(); newUser.Close(); bCreationStatus = true; } catch (System.DirectoryServices.DirectoryServicesCOMException E) { bCreationStatus = false; } return bCreationStatus; }
J'ai essayé d'impersonifier le code à cet endroit, mais ça ne change rien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 newUser.Invoke("SetPassword", new object[] { newUserPassword });
J'ai aussi pensé que le problème venait de la complexité de mon password. Je le génère en utilisant une classe spécifique. Ensuite je teste le password afin de savoir s'il est suffisamment complexe ou non. S'il ne l'est pas, on en génère un nouveau et on recommence le test. S'il passe le test, alors on l'attribue à l'utilisateur. Le test est une expression régulière, et les passwords générés répondent toujours aux critères de complexité de l'AD... Donc le problème ne vient à priori pas de là.
Avez-vous une idée ?
Merci par avance pour votre aide.
Partager