[英]How do I create this directory using this function? I keep getting an access denied error.(C#)
首先,让我先说我知道这似乎是一个常见问题,但相信我,我已经进行了广泛的搜索,但找不到具体问题的答案。 如果你碰巧知道这个特定问题在哪里被问到,一定要把它标记为重复并在那里引用我,并接受我的歉意,因为它没有找到它。
现在,我的代码中有一个简单的 if 函数:
if (!Directory.Exists(FileDirectory))
{
Directory.CreateDirectory(FileDirectory);
}
但是,在运行此 if 函数时,我收到此错误代码:
System.UnauthorizedAccessException: '访问路径'C:\\Program Files\\LockingProgram\\Password.txt;' 被拒绝。'
现在,显然问题是访问被拒绝。 我将如何获得访问权限? 我试过简单地立即写入文件,但是它找不到路径
File.WriteAllText(FileDirectory, Password);
抛出这个错误:
System.IO.DirectoryNotFoundException: '找不到路径 'C:\\Program Files\\LockingProgram\\Password.txt;'
FileDirectory
字符串是:
string FileDirectory = "C:\\Program Files\\LockingProgram\\Password.txt;";
目前,程序试图做的是在用户单击按钮时从用户那里获取密码,然后将该密码保存到位于文件目录的 txt 文件中以供将来参考。 当他们打开程序时,它会检查文件是否存在。 如果它存在,它会设置该文件的密码,如果它不存在,它会强制用户在文本框中输入一个字符串,然后从那里开始,我试图保存它。 但是,这就是我遇到问题的地方。
任何帮助将不胜感激!
编辑:我现在明白将它保存到Program Files
通常是一个坏主意,你应该改用AppData
。 我会尝试一下,如果当时有效,我会更新你。
编辑 2:它现在可以工作了。 我将文件目录更改为:
string FileDirectory = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "LockingApp";
我添加了一个新变量:
string FileName = "Password.txt";
我将目录的创建位置修改为:
if (!Directory.Exists(FileDirectory))
{
Directory.CreateDirectory(FileDirectory);
}
File.WriteAllText(Path.Combine(FileDirectory, FileName), Password);
谢谢你们的帮助! 希望我能很好地格式化这个问题。
C:\\Program Files\\LockingProgram\\Password.txt;
不是目录,使用
FileDirectory = @"C:\Program Files\LockingProgram";
Directory.CreateDirectory(FileDirectory);
此外,您很有可能需要以提升的权限或适当的权限(即作为管理员)运行您的程序
然而,有更好的地方来存储数据
如果我面向多个操作系统版本,我应该在哪里存储我的数据和配置文件?
即AppData ,例如
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
您可以使用独立存储来保存文件(似乎是最简单和最少使用的任务)。 检查下面的代码示例
using System;
using System.IO;
using System.IO.IsolatedStorage;
public class CreatingFilesDirectories
{
public static void Main()
{
using (IsolatedStorageFile isoStore = IsolatedStorageFile.GetStore(IsolatedStorageScope.User | IsolatedStorageScope.Domain | IsolatedStorageScope.Assembly, null, null))
{
isoStore.CreateDirectory("TopLevelDirectory");
isoStore.CreateDirectory("TopLevelDirectory/SecondLevel");
isoStore.CreateDirectory("AnotherTopLevelDirectory/InsideDirectory");
Console.WriteLine("Created directories.");
isoStore.CreateFile("InTheRoot.txt");
Console.WriteLine("Created a new file in the root.");
isoStore.CreateFile("AnotherTopLevelDirectory/InsideDirectory/HereIAm.txt");
Console.WriteLine("Created a new file in the InsideDirectory.");
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.