例外:“访问路径..被拒绝”

本文关键字:拒绝 访问路径 路径 访问 例外 | 更新日期: 2023-09-27 17:56:04

我正在用 C# 开发一个程序,其中一部分是在 Application.StartupPath 文件夹中创建一个目录,然后使用 System.IO.File.WriteAllText() 在其中写入一个文本文件。我的问题是我的程序崩溃了,抛出了一个UnauthorizedAccessException并告诉我"对路径的访问被拒绝",这很奇怪,考虑到无论我从哪个目录运行程序,无论是从我的云文件夹、桌面、我的文档等运行,它都会崩溃,甚至即使在任何这些目录中以管理员身份运行它。

我调试它的路径是 C:'Users'Jeff'Google Drive'Documents'Visual Studio 2013'Projects'Palobo'Palobo'bin'Debug .它是using System.IO;,我使用的代码包括:

Directory.CreateDirectory(Application.StartupPath);
File.WriteAllText(Application.StartupPath, "Password=" + x);

其中x是用户输入的一些字符串数据。

我得到的错误是:

拒绝访问路径 'C:''Users''Jeff''Google Drive''Documents''Visual Studio 2013''Projects''Palobo''mzdon29。

(mzdon29 是 jwalk96 的加密结果)。

有没有人知道我为什么会遇到这个问题?谢谢!

例外:“访问路径..被拒绝”

Application.StartupPath是一个文件夹(从中启动应用程序)。尝试在该文件夹中指定确切的文件名:

File.WriteAllText(Application.StartupPath + "''MyFile.txt", "Password=" + x);

让我们看一下这段代码:

Directory.CreateDirectory(Application.StartupPath);
File.WriteAllText(Application.StartupPath, "Password=" + x);

正在尝试创建一个已经存在的目录,然后您正在尝试将该目录用作文件名!您需要在路径末尾添加一些内容,以便使用新的文件夹和文件。

此外,首先使用StartupPath是不好的做法。您可以创建将启动路径设置为任意位置的快捷方式。但具体来说,默认的 StartupPath 通常位于"程序文件"文件夹下的某个位置。默认情况下,此文件夹下的项目对标准用户只读。相反,您应该考虑使用"应用程序数据"文件夹,如下所示:

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)

最后,这看起来肯定是以纯文本形式保存密码的。我真的需要回顾一下这有多糟糕吗?您甚至不应该加密保存密码(散列与加密不同),这是非常重要的事情之一,您甚至不应该为测试/学习/概念验证代码执行此操作。