Я проверяю, могу ли я получить доступ к общей папке или нет.
Это мой код:
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;
Моя проблема в том, что в первый раз после перезагрузки компьютера Directory.GetAccessControl(path)
занимает около 8 секунд.
Но если я выполню это снова, это будет очень быстро (<1 с). </p>
Почему GetAccessControl
в первый раз работает очень медленно?
Как можно решить эту проблему?