Function ShowACL($strFolder, $strAce)
Dim $objADSU, $objSD, $objDACL, $objAce
$objADSU = CreateObject("ADsSecurityUtility")
$objSD = $objADSU.GetSecurityDescriptor($strFolder,1, 1)
$objdacl = $objSD.DiscretionaryAcl
For Each $objAce in $objDACL
If $objAce.Trustee = $strAce
? " AceFlags: "+$objAce.AceFlags+" (&"+DecToHex($objAce.AceFlags)+")"
If ($objAce.AceFlags & &1) = &1
? " -OBJECT_INHERIT_ACE" + " (Hex: &"+1+") (Dec: "+CStr(&1)+")"
EndIf
If ($objAce.AceFlags & &2) = &2
? " -CONTAINER_INHERIT_ACE" + " (Hex: &"+2+") (Dec: "+CStr(&2)+")"
EndIf
If ($objAce.AceFlags & &4) = &4
? " -NO_PROPAGATE_INHERIT_ACE" + " (Hex: &"+4+") (Dec: "+CStr(&4)+")"
EndIf
If ($objAce.AceFlags & &8) = &8
? " -INHERIT_ONLY_ACE" + " (Hex: &"+8+") (Dec: "+CStr(&8)+")"
EndIf
If ($objAce.AceFlags & &10) = &10
? " -INHERITED_ACE" + " (Hex: &"+10+") (Dec: "+CStr(&10)+")"
EndIf
?
? " AccessMask: "+$objAce.AccessMask+" (&"+DecToHex($objAce.AccessMask)+")"
If ($objAce.AccessMask & &1) = &1
? " -FILE_READ_DATA Or FILE_LIST_DIRECTORY" + " (Hex: &"+1+") (Dec: "+CStr(&1)+")"
EndIf
If ($objAce.AccessMask & &2) = &2
? " -FILE_WRITE_DATA or FILE_ADD_FILE" + " (Hex: &"+2+") (Dec: "+CStr(&2)+")"
EndIf
If ($objAce.AccessMask & &4) = &4
? " -FILE_APPEND_DATA or FILE_ADD_SUBDIRECTORY" + " (Hex: &"+4+") (Dec: "+CStr(&4)+")"
EndIf
If ($objAce.AccessMask & &8) = &8
? " -FILE_READ_EA" + " (Hex: &"+8+") (Dec: "+CStr(&8)+")"
EndIf
If ($objAce.AccessMask & &10) = &10
? " -FILE_WRITE_EA" + " (Hex: &"+10+") (Dec: "+CStr(&10)+")"
EndIf
If ($objAce.AccessMask & &20) = &20
? " -FILE_EXECUTE or FILE_TRAVERSE" + " (Hex: &"+20+") (Dec: "+CStr(&20)+")"
EndIf
If ($objAce.AccessMask & &40) = &40
? " -FILE_DELETE_CHILD" + " (Hex: &"+40+") (Dec: "+CStr(&40)+")"
EndIf
If ($objAce.AccessMask & &80) = &80
? " -FILE_READ_ATTRIBUTES" + " (Hex: &"+80+") (Dec: "+CStr(&80)+")"
EndIf
If ($objAce.AccessMask & &100) = &100
? " -FILE_WRITE_ATTRIBUTES" + " (Hex: &"+100+") (Dec: "+CStr(&100)+")"
EndIf
If ($objAce.AccessMask & &10000) = &10000
? " -DELETE" + " (Hex: &"+10000+") (Dec: "+CStr(&10000)+")"
EndIf
If ($objAce.AccessMask & &20000) = &20000
? " -READ_CONTROL" + " (Hex: &"+20000+") (Dec: "+CStr(&20000)+")"
EndIf
If ($objAce.AccessMask & &40000) = &40000
? " -WRITE_DAC" + " (Hex: &"+40000+") (Dec: "+CStr(&40000)+")"
EndIf
If ($objAce.AccessMask & &80000) = &80000
? " -WRITE_OWNER" + " (Hex: &"+80000+") (Dec: "+CStr(&80000)+")"
EndIf
If ($objAce.AccessMask & &100000) = &100000
? " -SYNCHRONIZE" + " (Hex: &"+100000+") (Dec: "+CStr(&100000)+")"
EndIf
?
? " AceType: "+$objAce.AceType+" (&"+DecToHex($objAce.AceType)+")"
If ($objAce.AceFlags & &0) = &0
? " -Access Allowed" + " (Hex: &"+0+") (Dec: "+CStr(&0)+")"
EndIf
If ($objAce.AceFlags & &1) = &1
? " -Access Denied" + " (Hex: &"+1+") (Dec: "+CStr(&1)+")"
EndIf
If ($objAce.AceFlags & &2) = &2
? " -Audit" + " (Hex: &"+2+") (Dec: "+CStr(&2)+")"
EndIf
?
? " Flags:"+$objAce.Flags
?
EndIf
Next
EndFunction