当处理由
返回的访问规则时,GetAccessRules(True, True, GetType(System.Security.Principal.NTAccount))
如何判断每个规则中引用的NTAccount对象是用户账户还是组?
更新:
我已经解决了这个问题。请注意,此代码的目的是在检查期间返回True
(如果NTAccount
是一个组),否则返回False
或者发生错误。
是否有更好的方法来做到这一点?
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服务器上的本地组对象。我正在尝试使用NetUserGetInfo / NetLocalGroupGetInfo Win API调用来查看是否可以解决问题,但我无法使它们正常工作。 请参见NetUserGetInfo / NetLocalGroupGetInfo 返回错误1722以获得更多详细信息。
Active Directory
中的 Group 呢?适用于 Domain\GroupName 吗? - Kiquenet