Как проверить разрешения "Расширенный общий доступ" для папки с помощью C#?

Привет, я хочу проверить, является ли конкретная папка доступной пользователю. для нормальных прав на акции, я могу информацию по

DirectoryInfo di = new DirectoryInfo(path);
    DirectorySecurity acl = di.GetAccessControl(AccessControlSections.All);
    AuthorizationRuleCollection rules = acl.GetAccessRules(true, true, typeof(NTAccount));

    //Go through the rules returned from the DirectorySecurity
    foreach (AuthorizationRule rule in rules)
    {
        //If we find one that matches the identity we are looking for
        if (rule.IdentityReference.Value.Equals(NtAccountName, StringComparison.CurrentCultureIgnoreCase))
        {
            //Cast to a FileSystemAccessRule to check for access rights
            if ((((FileSystemAccessRule)rule).FileSystemRights & FileSystemRights.WriteData) > 0)
            {
                Console.WriteLine(string.Format("{0} has write access to {1}", NtAccountName, path));
            }
            else
            {
                Console.WriteLine(string.Format("{0} does not have write access to {1}", NtAccountName, path));
            }
        }
    }

Но проблема с этим подходом состоит в том, что если папка открыта для общего доступа с использованием опции "Расширенный общий доступ", как показано на рисунке, она не показывает никаких записей в журнале.

Как рассчитать это?

продвинутый Поделиться с пользователем

0 ответов

Другие вопросы по тегам