如何用c#创建一个非只读的文件夹?

问题描述 投票:0回答:1

在我的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();
}

我希望文件夹不是只读的,所以我可以使用我的程序安全地保存数据。任何人都知道为什么我的代码仍然创建只读一个?

c# forms winforms directory
1个回答
1
投票

我相信你必须使用DirectorySecurity对象设置以下内容:

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

然后,您可以使用以下命令创建目录:

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

编辑:

使用Directory.CreateDirectory()创建目录后,可以将以下内容应用于该文件夹。这将允许您指定的用户拥有该文件夹的FullControl。您可以通过“属性”>“安全性”检查该用户的权限

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

DirectorySecurity security = directory.GetAccessControl();

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

directory.SetAccessControl(security);
© www.soinside.com 2019 - 2024. All rights reserved.