Я использую следующий код, чтобы проверить, существует ли определенный пользователь в DACL
:
Dim l_managemantObject As ManagementBaseObject() = CType(securityDescriptor.Properties("DACL").Value, ManagementBaseObject())
For Each mObject As ManagementBaseObject In l_managemantObject
l_name = CType(mObject.GetPropertyValue("Trustee"), ManagementBaseObject).Properties("Name").Value.ToString
If CType(mObject.GetPropertyValue("Trustee"), ManagementBaseObject).Properties("Domain").Value IsNot Nothing Then
l_domain = CType(mObject.GetPropertyValue("Trustee"), ManagementBaseObject).Properties("Domain").Value.ToString()
End If
If users.UserName.ToLower = (l_domain & "\" & l_name).ToLower Then
Return True
End If
Next
Как видите, я могу получить имя пользователя и домен.Но как мне проверить, есть ли у пользователя разрешения FullControl
?
Редактировать:
Я провел дальнейшее расследование и обнаружил, что с помощью GetAccessMask
я могуполучить права доступа к общему ресурсу, принадлежащему пользователю или группе, от имени которых возвращается экземпляр.
Осталось выяснить: Как получить конкретного пользователя AccessMask
?
AccessMask на MSDN