简体   繁体   English

使用C#检查文件夹的访问权限

[英]Check for access rights on a folder using C#

I need check if a specific user (Domain or Local), has mentioned rights (Read / Write) on the given directory. 我需要检查特定用户(域或本地)是否在给定目录上提到了权限(读/写)。

The method should return true even the User is inheriting the rights from User Group (like Administrators). 即使用户正在从用户组(如管理员)继承权限,该方法也应返回true。

This answer works fine but it is limited to Current User only 这个答案很好用,但仅限于当前用户

Try the bellow function 尝试以下功能

using System.IO;
using System.Security.AccessControl; 

     public static bool CheckWritePermissionOnDir(string path)
        {
            var writeAllow = false;
            var writeDeny = false;
            var accessControlList = Directory.GetAccessControl(path); Control
            if (accessControlList == null)
                return false;
            var accessRules = accessControlList.GetAccessRules(true, true, typeof(System.Security.Principal.SecurityIdentifier));
            if (accessRules == null)
                return false;

            foreach (FileSystemAccessRule rule in accessRules)
            {
                if ((FileSystemRights.Write & rule.FileSystemRights) != FileSystemRights.Write)
                    continue;

                if (rule.AccessControlType == AccessControlType.Allow)
                    writeAllow = true;
                else if (rule.AccessControlType == AccessControlType.Deny)
                    writeDeny = true;
            }

            return writeAllow && !writeDeny;
        }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM