【问题标题】:how to check if user has full control permissions on a shared folder?如何检查用户是否对共享文件夹具有完全控制权限?
【发布时间】:2011-10-25 16:11:11
【问题描述】:

我使用以下代码来检查 DACL 中是否存在 certin 用户:

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 on MSDN

【问题讨论】:

    标签: .net vb.net .net-3.5 permissions wmi


    【解决方案1】:

    一直在我眼皮底下,在 managementObject 上使用GetPropertyValue("AccessMask") 获得权限级别。

    完整方法:

     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
    
            Dim l_accessMask as UInteger = mObject.GetPropertyValue("AccessMask")
    
            If users.UserName.ToLower = (l_domain & "\" & l_name).ToLower Then
               if l_accessMask = 2032127 then
                  Return True  
               endif                             
            End If
        Next
    

    【讨论】:

      猜你喜欢
      • 2011-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-27
      • 2015-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多