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)
沒有留言:
張貼留言