2014-04-01 60 views
0

我正在使用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:\用户\杰夫\谷歌驱动器\ Documents \ Visual Studio的2013 \项目\ Palobo \ mzdon29被拒绝。

(mzdon29是jwalk96的加密结果)。

有没有人有任何想法,为什么我遇到这个问题?谢谢!

+0

你运行的exe外部或者你attemping通过在你的IDE调试器来运行呢? –

+0

两者,无论哪种方式,我得到相同的结果。 – Jeff

+0

你能告诉我们错误发生的地方吗? –

回答

3

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

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

啊,我明白我做了什么。谢谢@Joel Coehoorn和@nXu! – Jeff

3

让我们来看看下面的代码:

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

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

此外,使用StartupPath为此首先是糟糕的做法。您可以创建一个快捷方式,将启动路径设置为任意位置。但是,具体而言,默认的StartupPath位于Program Files文件夹下的某个位置很常见。此文件夹下的项目默认为只读标准用户。相反,你应该看看使用Application Data文件夹,例如:

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)