在我的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();
}
我希望文件夹不是只读的,所以我可以使用我的程序安全地保存数据。任何人都知道为什么我的代码仍然创建只读一个?
我相信你必须使用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);