尝试在C#中写入文本文件时出现UnauthorizedAccessException

时间:2012-03-12 23:48:34

标签: c# streamwriter

我正在尝试写一个包含在我的安装程序中的空白文本文件,但是我收到以下错误;

System.UnauthorizedAccessException: Access to the path 'C:\Program Files (x86)\Hex Technologies\wamplocation.txt' is denied.

一旦通过我的安装程序安装文件,它似乎是文件的权限,但是如果文件安装完成后如何将文件设置为完全可修改?!这可以通过C#?!

完成

EDITTED;

           wamp_url = openFileDialog1.FileName.ToString();
           String EnviromentPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
           StreamWriter outfile = new StreamWriter(EnviromentPath + @"\Hex Technologies\wamplocation.txt");
           outfile.Write(wamp_url);
           outfile.Close();

2 个答案:

答案 0 :(得分:7)

您不应将可修改数据文件存储在Program Files路径中。使用Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)

Program Files \ ...路径受到Win7 +上普通用户的修改保护。试图规避这种保护是个坏主意。

答案 1 :(得分:2)

可能性是UAC正在阻碍你。

理想情况下,您的程序不应该写入此位置,此修改文件将在安装过程中进行修改,而在其他任何地方您都需要确保您正在升级。

如果要在运行时修改此文件,则应考虑将%appdata%用于用户数据,或将%programdata%用于程序数据而不是程序文件。