Используя C# для получения списка ACLs для Серверов и сетевых дисков

Поскольку матовый freake указал в своем ответе , практического различия между

public static  void copyA(List dest, List src) // and
public static  void copyB(List<        T> dest, List src)

не существует. В приведенном ниже фрагменте содержится exampleShowingThatTheyAreBasicallyEquivalent.

Причина, по которой авторы решили использовать ? super T, скорее всего, хотела бы подчеркнуть принцип PECS: Производитель extends - Потребитель super .

В этом примере первый список является потребителем объектов. Он получает только объекты из другого списка. Поэтому его тип должен быть List.

Однако в приведенном ниже фрагменте также содержится exampleShowingOneSubtleDifference. Я едва ли могу придумать случай, когда это действительно практически релевантно , но просто для того, чтобы указать на это: когда вы обходите вывод типа и привязываете тип к одному конкретному типу, вы все равно можете передать List в качестве первого аргумента первому методу. Во втором, тип должен точно соответствовать, но это просто то, что говорит подпись метода, поэтому, возможно, это очевидно ...

import java.util.List;

public class PecsExample
{
    public static void exampleShowingOneSubtleDifference()
    {
        List superNumbers = null;
        List numbers = null;

        PecsExample.copyA(superNumbers, numbers); // Works
        //PecsExample.copyB(superNumbers, numbers); // Does not work
    }

    public static void exampleShowingThatTheyAreBasicallyEquivalent()
    {
        List superObjects = null;
        List superNumbers = null;
        List superIntegers = null;

        List objects = null;
        List numbers = null;
        List integers = null;

        List extendsObjects = null;
        List extendsNumbers = null;
        List extendsIntegers = null;

        copyA(objects, objects);
        copyA(objects, numbers);
        copyA(objects, integers);
        copyA(numbers, numbers);
        copyA(numbers, integers);
        copyA(integers, integers);

        copyA(superObjects, objects);
        copyA(superObjects, numbers);
        copyA(superObjects, integers);
        copyA(superNumbers, numbers);
        copyA(superNumbers, integers);
        copyA(superIntegers, integers);

        copyA(objects, extendsObjects);
        copyA(objects, extendsNumbers);
        copyA(objects, extendsIntegers);
        copyA(numbers, extendsNumbers);
        copyA(numbers, extendsIntegers);
        copyA(integers, extendsIntegers);

        copyB(objects, objects);
        copyB(objects, numbers);
        copyB(objects, integers);
        copyB(numbers, numbers);
        copyB(numbers, integers);
        copyB(integers, integers);

        copyB(superObjects, objects);
        copyB(superObjects, numbers);
        copyB(superObjects, integers);
        copyB(superNumbers, numbers);
        copyB(superNumbers, integers);
        copyB(superIntegers, integers);

        copyB(objects, extendsObjects);
        copyB(objects, extendsNumbers);
        copyB(objects, extendsIntegers);
        copyB(numbers, extendsNumbers);
        copyB(numbers, extendsIntegers);
        copyB(integers, extendsIntegers);
    }

    public static  void copyA(List dest, List src)
    {
        for (int i = 0; i < src.size(); i++)
        {
            dest.set(i, src.get(i));
        }
    }

    public static  void copyB(List dest, List src)
    {
        for (int i = 0; i < src.size(); i++)
        {
            dest.set(i, src.get(i));
        }
    }
}

14
задан bdwakefield 20 February 2009 в 16:10
поделиться

2 ответа

Ваше получение ошибки из-за вкладки 'Auditing', хотя я абсолютно уверен все Вы действительно, хочет получить доступ на экране, данные по вкладке 'Permissions'. SeSecurityPrivilege управляет доступом к SACL.

Попытка, изменяющаяся

DirectorySecurity DirSec = di.GetAccessControl(AccessControlSections.All);

к

DirectorySecurity DirSec = di.GetAccessControl(AccessControlSections.Access);

затем, необходимо прекратить получать ошибку

20
ответ дан 1 December 2019 в 12:53
поделиться

Проверьте, что удаленная папка предоставляет пользователю, выполняющему Атрибуты Чтения кода в ACL.

Также помнят, что полномочия разрешены на удаленном (сервер) машины, так локальная группа (Пользователи и Администраторы), членство не может включать учетную запись пользователя, работающую на клиенте.

Наличие Монитор Процесса работа сервера (фильтрованный к рассматриваемым папкам/файлам) может помочь разрешить детали того, почему это перестало работать.

1
ответ дан 1 December 2019 в 12:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: