我正在检查是否可以访问共享文件夹。
这是我的代码:
var readAllow = false;
var readDeny = false;
var accessControlList = Directory.GetAccessControl(path);
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.Read & rule.FileSystemRights) != FileSystemRights.Read) continue;
if (rule.AccessControlType == AccessControlType.Allow)
readAllow = true;
else if (rule.AccessControlType == AccessControlType.Deny)
readDeny = true;
}
return readAllow && !readDeny;
我的问题是,第一次重启PC后,Directory.GetAccessControl(path)
大约需要8秒钟。
但是如果我再次执行它,它会非常快(<1s)。
为什么GetAccessControl
第一次运行时速度很慢?
如何解决此问题?