luni, 25 august 2014

Check User Has Write Permission on Folder C#

GetAccessControl

GetAccessControl: returns the Windows access control list (ACL) for a directory
GetAccessRules: gets a collection of the access rules associated with the specified security identifier

Example: check write permission on folder

public static bool HasWritePermission(string dir)
        { 
            bool Allow = false
            bool Deny = false;
            DirectorySecurity  acl = null;
            try
            {
                acl = Directory.GetAccessControl(dir);
            }
            catch (System.IO.DirectoryNotFoundException)
            {
                throw new Exception("DirectoryNotFoundException"); 
            }
            if (acl == null
                return false
            AuthorizationRuleCollection  arc = acl.GetAccessRules(truetrue,typeof(System.Security.Principal.SecurityIdentifier)); 
            if (arc == null
                return false
            foreach (FileSystemAccessRule rule in arc) 
            { 
                if ((FileSystemRights.Write & rule.FileSystemRights) !=FileSystemRights.Write) 
                    continue
                if (rule.AccessControlType == AccessControlType.Allow)
                    Allow = true
                else if (rule.AccessControlType == AccessControlType.Deny)
                    Deny = true
            }
            return Allow && !Deny; 
        }

Niciun comentariu:

Trimiteți un comentariu