예제 #1
0
 internal void SetPathList(FileIOPermissionAccess access, AccessControlActions control, string[] pathList, bool checkForDuplicates)
 {
     FileIOPermission.VerifyAccess(access);
     if ((access & FileIOPermissionAccess.Read) != FileIOPermissionAccess.NoAccess)
     {
         this.m_read = (FileIOAccess)null;
     }
     if ((access & FileIOPermissionAccess.Write) != FileIOPermissionAccess.NoAccess)
     {
         this.m_write = (FileIOAccess)null;
     }
     if ((access & FileIOPermissionAccess.Append) != FileIOPermissionAccess.NoAccess)
     {
         this.m_append = (FileIOAccess)null;
     }
     if ((access & FileIOPermissionAccess.PathDiscovery) != FileIOPermissionAccess.NoAccess)
     {
         this.m_pathDiscovery = (FileIOAccess)null;
     }
     if ((control & AccessControlActions.View) != AccessControlActions.None)
     {
         this.m_viewAcl = (FileIOAccess)null;
     }
     if ((control & AccessControlActions.Change) != AccessControlActions.None)
     {
         this.m_changeAcl = (FileIOAccess)null;
     }
     this.m_unrestricted = false;
     this.AddPathList(access, control, pathList, checkForDuplicates, true, true);
 }
예제 #2
0
 public FileIOPermission(FileIOPermissionAccess access, AccessControlActions control, string path)
 {
     FileIOPermission.VerifyAccess(access);
     string[] pathListOrig = new string[1] {
         path
     };
     this.AddPathList(access, control, pathListOrig, false, true, false);
 }
예제 #3
0
 public string[] GetPathList(FileIOPermissionAccess access)
 {
     FileIOPermission.VerifyAccess(access);
     FileIOPermission.ExclusiveAccess(access);
     if (FileIOPermission.AccessIsSet(access, FileIOPermissionAccess.Read))
     {
         if (this.m_read == null)
         {
             return((string[])null);
         }
         return(this.m_read.ToStringArray());
     }
     if (FileIOPermission.AccessIsSet(access, FileIOPermissionAccess.Write))
     {
         if (this.m_write == null)
         {
             return((string[])null);
         }
         return(this.m_write.ToStringArray());
     }
     if (FileIOPermission.AccessIsSet(access, FileIOPermissionAccess.Append))
     {
         if (this.m_append == null)
         {
             return((string[])null);
         }
         return(this.m_append.ToStringArray());
     }
     if (!FileIOPermission.AccessIsSet(access, FileIOPermissionAccess.PathDiscovery))
     {
         return((string[])null);
     }
     if (this.m_pathDiscovery == null)
     {
         return((string[])null);
     }
     return(this.m_pathDiscovery.ToStringArray());
 }
예제 #4
0
        internal void AddPathList(FileIOPermissionAccess access, AccessControlActions control, string[] pathListOrig, bool checkForDuplicates, bool needFullPath, bool copyPathList)
        {
            if (pathListOrig == null)
            {
                throw new ArgumentNullException("pathList");
            }
            if (pathListOrig.Length == 0)
            {
                throw new ArgumentException(Environment.GetResourceString("Argument_EmptyPath"));
            }
            FileIOPermission.VerifyAccess(access);
            if (this.m_unrestricted)
            {
                return;
            }
            string[] str = pathListOrig;
            if (copyPathList)
            {
                str = new string[pathListOrig.Length];
                Array.Copy((Array)pathListOrig, (Array)str, pathListOrig.Length);
            }
            FileIOPermission.CheckIllegalCharacters(str);
            ArrayList listFromExpressions = StringExpressionSet.CreateListFromExpressions(str, needFullPath);

            if ((access & FileIOPermissionAccess.Read) != FileIOPermissionAccess.NoAccess)
            {
                if (this.m_read == null)
                {
                    this.m_read = new FileIOAccess();
                }
                this.m_read.AddExpressions(listFromExpressions, checkForDuplicates);
            }
            if ((access & FileIOPermissionAccess.Write) != FileIOPermissionAccess.NoAccess)
            {
                if (this.m_write == null)
                {
                    this.m_write = new FileIOAccess();
                }
                this.m_write.AddExpressions(listFromExpressions, checkForDuplicates);
            }
            if ((access & FileIOPermissionAccess.Append) != FileIOPermissionAccess.NoAccess)
            {
                if (this.m_append == null)
                {
                    this.m_append = new FileIOAccess();
                }
                this.m_append.AddExpressions(listFromExpressions, checkForDuplicates);
            }
            if ((access & FileIOPermissionAccess.PathDiscovery) != FileIOPermissionAccess.NoAccess)
            {
                if (this.m_pathDiscovery == null)
                {
                    this.m_pathDiscovery = new FileIOAccess(true);
                }
                this.m_pathDiscovery.AddExpressions(listFromExpressions, checkForDuplicates);
            }
            if ((control & AccessControlActions.View) != AccessControlActions.None)
            {
                if (this.m_viewAcl == null)
                {
                    this.m_viewAcl = new FileIOAccess();
                }
                this.m_viewAcl.AddExpressions(listFromExpressions, checkForDuplicates);
            }
            if ((control & AccessControlActions.Change) == AccessControlActions.None)
            {
                return;
            }
            if (this.m_changeAcl == null)
            {
                this.m_changeAcl = new FileIOAccess();
            }
            this.m_changeAcl.AddExpressions(listFromExpressions, checkForDuplicates);
        }
예제 #5
0
 internal FileIOPermission(FileIOPermissionAccess access, AccessControlActions control, string[] pathList, bool checkForDuplicates, bool needFullPath)
 {
     FileIOPermission.VerifyAccess(access);
     this.AddPathList(access, control, pathList, checkForDuplicates, needFullPath, true);
 }
예제 #6
0
 public FileIOPermission(FileIOPermissionAccess access, string[] pathList)
 {
     FileIOPermission.VerifyAccess(access);
     this.AddPathList(access, pathList, false, true, false);
 }