Bonjour,

Je travail actuellement sur une application en relation avec Active Directory (LDAP) et le langage C#. Cela fait déjà un moment que je suis dessus, je me suis bien documenté sur le sujet avec, entre autre, les tutoriels du site, mais là j'ai un soucis.
En effet, je n'arrive pas à récupérer une propriété précise d'un objet AD.
Donc normalement pour récupérer un objet de l'AD il y deux possibilités, soit on crée un DirectoryEntry avec son distinguished name :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
DirectoryEntry myEntry = new DirectoryEntry("LDAP://192.168.1.1/DC=domaine, DC=lan", "username", "password");
En l'occurrence ici c'est un objet particulier puisqu'il s'agit du noeud racine de mon domaine, mais normalement cela ne change rien.
Donc normalement mon objet "myEntry" contient toutes les propriétés de l'objet AD correspondant, j'essaie donc de récupérer sa propriété "canonicalName" de type multi-value string, grâce à :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
foreach(string tmp in myEntry.Properties["canonicalName"])
{
    MessageBox.Show(tmp);
}
Mais lors de l'execution ça ne rentre pas dans la boucle. Lorsque je liste l'ensemble des propriétés (attribut correspondant à l'objet AD) de l'objet "myEntry", grâce à :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
myEntry.Properties.PropertyNames;
La propriété "canonicalName" n'est pas présente ! Pourtant dans AD cet objet à bien une valeur pour l'attribut correspondant (vérifier grâce ADSIEdit & AD User & Computer)

J'ai donc essayé l'autre solution de récupération d'un objet AD, j'ai fait une recherche de mon objet par le biais d"un DirectorySearcher :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
DirectorySearcher mySearch = new DirectorySearcher(myEntry);
   mySearch.Filter = "(dc=grp-1)";
   search.SearchScope = SearchScope.Base;
Le résultat est le même je ne récupère toujours pas ma propriété ! J'ai même essayé cela :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
mySearch.PropertiesToLaod.Add("canonicalName");
Mais "canonicalName" n'est toujours pas présent.


Merci d'avance pour votre aide, car je ne voie aucune solution à mon problème.


A noté au passage que ce "PropertiesToLaod" n'a jamais eu d'effet chez moi, même lorsque je n'indiquait qu'un seule propriété a récupérer, il m'en ramenait plein.