Установить права доступа к файлам в C #

Я хочу установить разрешения для файла на «нельзя удалить» в C #, только для чтения. Но я не знаю, как это сделать. Вы можете мне помочь ?


person Yasin Ozel    schedule 28.09.2011    source источник


Ответы (3)


Взгляните на File.SetAttributes (). В Интернете есть множество примеров того, как его использовать.

Взято с этой страницы MSDN:

FileAttributes attributes = File.GetAttributes(path);

        if ((attributes & FileAttributes.Hidden) == FileAttributes.Hidden)
        {
            // Show the file.
            attributes = RemoveAttribute(attributes, FileAttributes.Hidden);
            File.SetAttributes(path, attributes);
            Console.WriteLine("The {0} file is no longer hidden.", path);
        } 
        else 
        {
            // Hide the file.
            File.SetAttributes(path, File.GetAttributes(path) | FileAttributes.Hidden);
            Console.WriteLine("The {0} file is now hidden.", path);
        }
person jb.    schedule 28.09.2011
comment
Думаю, вопрос в разрешениях, а не в атрибутах ... - person Yousha Aleayoub; 21.04.2020

Это об атрибутах (см. Ответ jb.) Или разрешениях, то есть о доступе для чтения / записи и т. Д.? В последнем случае см. Файл .SetAccessControl.

Из MSDN:

// Get a FileSecurity object that represents the
// current security settings.
FileSecurity fSecurity = File.GetAccessControl(fileName);

// Add the FileSystemAccessRule to the security settings.
fSecurity.AddAccessRule(new FileSystemAccessRule(account, rights, controlType));

// Set the new access settings.
File.SetAccessControl(fileName, fSecurity);

См. Как предоставить полное разрешение на файл, созданный моим приложением, ВСЕМ пользователям? для более конкретного примера.

В исходном вопросе похоже, что вы хотите запретить право FileSystemRights.Delete.

person Echsecutor    schedule 07.10.2016
comment
код также находится в этом MSDN - person yu yang Jian; 11.08.2019
comment
Ссылка выше (File.AccessControl) - это версия на немецком языке. Английская версия находится по адресу docs. .microsoft.com / en-us / dotnet / api / для тех, кто отвечает «Nein». в Sprichst du Deutsch ' - person Mark Ainsworth; 24.09.2019

Вы забыли скопировать метод RemoveAttribute, который:

    private static FileAttributes RemoveAttribute(FileAttributes attributes, FileAttributes attributesToRemove)
    {
        return attributes & ~attributesToRemove;
    }
person MelloG    schedule 20.11.2012