UnauthorizedAccessException при попытке записи в текстовый файл в C # - PullRequest
0 голосов
/ 13 марта 2012

Я пытаюсь написать пустой текстовый файл, который включен в мой установщик, но я получаю следующую ошибку:

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 ]

7 голосов
/ 13 марта 2012

Вы не должны хранить свои изменяемые файлы данных в пути Program Files.Используйте Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) или Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)

Путь Program Files \ ... защищен от модификации обычными пользователями на Win7 +.Было бы плохой идеей попытаться обойти эту защиту.

2 голосов
/ 13 марта 2012

Похоже, UAC мешает вам.

В идеале ваша программа не должна писать в это место, если этот файл модификации должен быть изменен во время процесса установки, и нигде больше вам не нужно убедиться, что вы работаете с повышенными правами.

Если этот файл необходимо изменить во время выполнения, вы должны рассмотреть возможность использования% appdata% для пользовательских данных или% programdata% для данных программы вместо файлов программы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...