Как создать папку с C #, которая не только для чтения? - PullRequest
0 голосов
/ 30 апреля 2019

В моем приложении на C # я пытаюсь загрузить данные в каталог моего SFTP-сервера.Данные должны храниться в папке, которую я хочу создать в «MyDocuments».Когда папка создается, я получаю сообщение об ошибке Renci «сбой», потому что папка «только для чтения».

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

String localPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\MyNewFolder\\";

if (Directory.Exists(localPath))
{
    Console.WriteLine("Folder already exists");
}

if (!Directory.Exists(localPath))
{
    Directory.CreateDirectory(localPath);

    DirectoryInfo directory = new DirectoryInfo(localPath);
    DirectorySecurity security = directory.GetAccessControl();
}

Я ожидаю, что папка будет не только для чтения, чтобы я могла сохранить в ней данные с помощью своей программы.Кто-нибудь знает, почему мой код все еще создает только для чтения?

1 Ответ

1 голос
/ 30 апреля 2019

Я считаю, что вы должны установить следующее с помощью объекта DirectorySecurity:

        DirectorySecurity securityRules = new DirectorySecurity();
        securityRules.AddAccessRule(new FileSystemAccessRule(@"Domain\Account", FileSystemRights.FullControl, AccessControlType.Allow));

Затем вы можете создать каталог, используя следующее:

DirectoryInfo di = Directory.CreateDirectory(@"directoryToCreatePath", securityRules);

РЕДАКТИРОВАНИЕ:

После того, как вы создали каталог с помощью Directory.CreateDirectory (), вы можете применить к папке следующее. Это позволит указанному пользователю иметь полный контроль над папкой. Вы можете проверить разрешения для этого пользователя через Свойства> Безопасность

DirectoryInfo directory = new DirectoryInfo("C:\\CreatedFolder");

DirectorySecurity security = directory.GetAccessControl();

security.AddAccessRule(new FileSystemAccessRule(@"USERNAME",
                                FileSystemRights.FullControl,
                                AccessControlType.Allow));

directory.SetAccessControl(security);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...