J'ai créé un service Web WCF pour renvoyer des informations sur les utilisateurs et les groupes à partir d'Active Directory. Cela fonctionne pour la plupart des groupes et des utilisateurs.DirectoryEntry.Invoke ("groups", null) ne récupère pas tous les groupes?
J'utilise directoryEntry.Invoke ("groups", null) pour retourner les groupes dont un utilisateur spécifié est membre. Cela renvoie les groupes MOST. La chose étrange est que je peux trouver n'importe quel groupe et énumérer ses membres, même si c'est l'un des groupes manquants quand j'utilise la requête d'invocation sur un de ses membres.
La plupart des groupes qui présentent ce comportement sont compatibles avec Exchange. La plupart des comptes d'utilisateurs problématiques concernent les utilisateurs d'un domaine fédéré qui utilisent un serveur Exchange dans le domaine interrogé. Je n'essaie pas d'interroger des objets dans le domaine fédéré.
Mes théories à ce jour:
certaines restrictions de sécurité ne permet pas tous les groupes par l'énumération Invoke(), même si je peux interroger les groupes manquants et d'énumérer leurs membres.
invoke a des problèmes avec certains sous-groupes de groupes. La méthode invoke ne récupère pas tous les groupes car les comptes "fédérés" (créés dans le cadre de leur configuration du compte Exchange) sont différents des comptes de domaine habituels. au-delà de la cartographie Sid retour à leur domaine de connexion.
Ces sont de bonnes suggestions et vous avez raison sur l'article MSDN, j'aurais dû lire cela avant de commencer. En ce qui concerne les raisons pour lesquelles j'ai utilisé la méthode invoke, dans ce cas, tout ce dont j'avais besoin était les noms des groupes, et cela semblait être un moyen efficace d'obtenir l'information. Je n'ai pas fait beaucoup de programmation sur Active Directory, donc j'apprends toujours la meilleure façon de procéder. Il est intéressant combien .NET a évolué dans ce domaine depuis 1.1! – HeathenWorld
Pas de problème du tout - juste curieux si vous aviez une raison particulière d'utiliser l'approche Invoke(). Et bon - c'est ce que propose StackOverflow - vous aider lorsque vous ne voyez pas la forêt pour les arbres :-) –
+1 pour l'article MSDN lié, beaucoup plus facile dans 3.5 – tbone