J'utilise GetTokenInformation
avec les indicateurs TokenGroups
pour récupérer tous les groupes dont un jeton particulier fait partie. Je suis ensuite en boucle à travers chacun des SID retournés et en utilisant LookupAccountSid
pour récupérer le nom d'utilisateur et le domaine. J'appelle deux fois: LookupAccountSid
: la première fois pour saisir la taille du nom et les tableaux de caractères du domaine et la seconde fois remplit StringBuilder
s.LookupAccountSid prenant +600 ms par appel
Je reçois des délais très longs. J'ai couru ANTS pour voir quel était le problème et j'ai trouvé que si un utilisateur faisait partie de 23 groupes, la séquence entière prendrait 15 secondes! Le profileur pointe vers le premier appel de LookupAccountSid et indique qu'il faisait en moyenne 652 ms par appel.
C'est ce que l'appel ressemble à:
LookupAccountSid(null, tokenGroups.Groups[i].SID, null, ref accountCount, null,
ref domainCount, out snu);
accountCount
et domainCount
sont initialisés à 0 avant cet appel. À la fin, l'appel fonctionne, mais ce délai est long. Qu'est-ce que je fais mal?
Les retards de réseau parlant au contrôleur de domaine, ou le CC lui-même, serait ma conjecture. –