[Active Directory - C#] Récupération propriété objet AD
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:
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:
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:
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:
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:
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.
M E R C I & R E S P E C T
Deux choses à dire : Merci & Respect !
Il fallait faire un 'RefreshCach()'
myEntry.RefreshCache(new string[] { "canonicalName" });
Et ma propriété est apparue comme par magie !
Merci beaucoup, j'aurais pas trouvé, ce forum est vraiment une tuerie...