private static bool HasPermissionToReadFiles(string path) { var readAllow = false; var readDeny = false; var firstFoundFile = Directory.EnumerateFiles(path, "*.*", SearchOption.AllDirectories).FirstOrDefault(); if (firstFoundFile == null) { throw new Exception("There is no file in provided path."); } var accessControlList = Directory.GetAccessControl(firstFoundFile); if (accessControlList == null) return false; var accessRules = accessControlList.GetAccessRules(true, true, typeof(SecurityIdentifier)); if (accessRules == null) return false; foreach (FileSystemAccessRule rule in accessRules) { if ((FileSystemRights.Read & rule.FileSystemRights) != FileSystemRights.Read) continue; if (rule.AccessControlType == AccessControlType.Allow) readAllow = true; else if (rule.AccessControlType == AccessControlType.Deny) readDeny = true; } return readAllow && !readDeny; }
2020年6月27日 星期六
【C#】Verify permission of specific directory
Actual verification of read permission to specific directory without opens a stream.
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言