Директория / Проблема с правами доступа к файлам - PullRequest
1 голос
/ 26 ноября 2008

Я написал код для установки прав доступа к папке. Разработанная мной функция была

public void SetPermission(string user,FileSystemRights rights)
{
    DirectoryInfo dInfo = new DirectoryInfo(folderPath);
    DirectorySecurity oDirectorySecurity = new DirectorySecurity();

    oDirectorySecurity.AddAccessRule(new FileSystemAccessRule(user, rights, AccessControlType.Allow));
    dInfo.SetAccessControl(oDirectorySecurity);
}

Эта функция работает нормально, чтобы установить разрешение для пользователя. Но когда я проверяю папку Свойства -> Безопасность, пользователь добавляет. Но в галочке нет разрешения Откройте расширенное диалоговое окно. В этом окне я вижу разрешение, которое я установил для пользователя.

Итак, мой вопрос: почему на вкладке безопасности не установлен флажок, но он есть на вкладке «Дополнительно»?

Пожалуйста, ПОМОГИТЕ мне !!!!!!

Ответы [ 2 ]

1 голос
/ 10 января 2009

Я тоже столкнулся с этим. Похоже, это исправление.

Вы можете прочитать, как я это исправил на http://jspot.jerryhanel.com/2009/01/08/c-filedirectory-permissions/

Короткая версия: Вы должны установить флаг для всех ACL для всех пользователей. Да ... это ужасно И когда вы добавляете Service Pack 3, галочки снова исчезают. Если у кого-нибудь есть более чистое решение, чем это, ПОЖАЛУЙСТА, дайте мне знать.

У меня есть код для этого на моем сайте.

ОБНОВЛЕНИЕ : URL теперь указывает на новый сайт.

0 голосов
/ 04 декабря 2008

Может помочь использование dInfo.GetAccessControl для инициализации oDirectorySecurity. Вы также можете попробовать вызвать oDirectorySecurity.SetOwner.

Иногда разрешения отображаются только в расширенном режиме, если они не применяются к правильным объектам. Попробуйте установить флаги наследования / распространения для вашего объекта FileSystemAccessRule.

...