Lorsque vous travaillez avec les règles d'accès renvoyés parComment vérifier si un objet NTAccount représente un groupe ou un utilisateur?
GetAccessRules(True, True, GetType(System.Security.Principal.NTAccount))
comment puis-je savoir si l'objet NTAccount référencé dans chaque règle est un compte d'utilisateur ou un groupe?
Mise à jour:
j'ai pu résoudre cela comme suit. Notez que l'intention de ce code est de renvoyer True
si le NTAccount
est un groupe et False
sinon ou si une erreur se produit lors de la vérification.
Y a-t-il une meilleure façon de procéder?
Public Function IsGroup(ByVal account As NTAccount) as Boolean
Dim samAccountName as string = account.Value
Dim accountNameParts() As String = samAccountName.Split("\")
If accountNameParts.Count() = 2 Then
Dim principalContext As PrincipalContext
Try
principalContext = New PrincipalContext(ContextType.Domain, accountNameParts(0))
Catch
Try
principalContext = New PrincipalContext(ContextType.Machine, accountNameParts(0))
Catch
principalContext = Nothing
End Try
End Try
If Not principalContext Is Nothing Then
Dim principal As Principal
principal = principal.FindByIdentity(principalContext, _samAccountName)
If Not principal Is Nothing then
return TypeOf principal Is GroupPrincipal
End If
End If
End If
Return False
End Function
Une autre mise à jour:
La solution ci-dessus était correct pour la plupart des serveurs \ objets de compte, mais il échoue pour les objets groupe local sur les serveurs NAS EMC Celerra que nous avons. J'essaie d'utiliser les appels API NetUserGetInfo/NetLocalGroupGetInfo Win pour voir si cela fonctionnera, mais je ne peux pas les faire fonctionner correctement. Voir NetUserGetInfo/NetLocalGroupGetInfo returning error 1722 pour plus de détails.
J'ai travaillé le maintenant. Merci. –