GetAccessRules(True, True, GetType(System.Security.Principal.NTAccount))
我怎麼能告訴我們,如果在每個規則中引用的NTACCOUNT對象是用戶帳戶或組返回的訪問規則的工作?
更新:
我能解決這個問題如下。請注意,如果NTAccount
是一個組,則此代碼的意圖是返回True
,否則或在檢查過程中發生錯誤時返回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 returning error 1722。
我已經完成了現在。謝謝。 – 2010-09-17 03:39:46