Как проверить, представляет ли объект NTAccount группу или пользователя?

При работе с правилами доступа, возвращаемыми

GetAccessRules(True, True, GetType(System.Security.Principal.NTAccount))

, как я могу определить, является ли объект NTAccount, указанный в каждом правиле, учетной записью пользователя или группой?

Обновление:

Я смог решить эту проблему следующим образом . Обратите внимание, что этот код предназначен для возврата Истина , если NTAccount является группой, и Ложь в противном случае или в случае возникновения ошибки во время проверки.

Есть лучший способ сделать это?

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

Другое обновление:

Вышеупомянутое решение подходит для большинства объектов сервер \ учетная запись, но не работает для объектов локальной группы на серверах EMC Celerra NAS, которые у нас есть. Я пытаюсь использовать вызовы Win API NetUserGetInfo / NetLocalGroupGetInfo, чтобы посмотреть, будет ли это работать, но я не могу заставить их работать должным образом. См. NetUserGetInfo / NetLocalGroupGetInfo, возвращающий ошибку 1722 для получения дополнительных сведений.

5
задан Community 23 May 2017 в 12:30
поделиться