c# - 如何用c#创建一个非只读的文件夹?
问题描述
在我的 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() 创建目录后,您可以将以下内容应用于该文件夹。这将允许您指定的用户拥有文件夹的完全控制权。您可以通过 Properties > Security 检查该用户的权限
DirectoryInfo directory = new DirectoryInfo("C:\\CreatedFolder");
DirectorySecurity security = directory.GetAccessControl();
security.AddAccessRule(new FileSystemAccessRule(@"USERNAME",
FileSystemRights.FullControl,
AccessControlType.Allow));
directory.SetAccessControl(security);
推荐阅读
- mysql - 无法使用 JDBC 将 Apps 脚本连接到 Cloud SQL
- python - 尽管返回一个列表,但得到无
- javascript - How can I fix importing modules CORS policy error in JavaScript
- reactjs - how to make changes in reactjs project on production? on aws ec2?
- node.js - Node.js completely remove file in a running script
- java - design problem with starting foreground service from other foreground service
- javascript - In a Leaflet Map, how to make the popup scroll between different markers at the exact same coordinates?
- apache-kafka-streams - ksqlDB UDF accepting Structs matching any schema
- python - How to combine queue and join on the play command? - Discord.py
- wordpress - Uploading Image to WordPress media using RestSharp