繁体   English   中英

如何使用此功能创建此目录? 我不断收到拒绝访问错误。(C#)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM