Написал рабочую программу, преобразовал её к виду WinForms. В ней учтена простая система регистрации, где необходим файл с нужными данными - логин и пароль. Через проект SetupProject создал необходимую программу-установщик для своей программы. До этого без установщика всё работало прекрасно и слажено, никаких ошибок программа не вызывала. После того, как я установил свою программу и попытался зарегистрироваться, выходит такая ошибка: System.UnauthorizedAccessException: Отказано в доступе по пути "C:\Program Files (x86)\Default Company Name\Lagrange Setup\users.txt". users.txt - файл с данными о пользователях. Причём одна и та же ошибка возникает и при регистрации, и при авторизации. Вот полный код регистрации:
private void button7_Click(object sender, EventArgs e)
{
if (textBox7.Text != textBox8.Text) { MessageBox.Show("Пароли не совпадают! \n Повторите правильность ввода пароля!"); return; }
if (textBox6.Text == "" || textBox7.Text == "" || textBox8.Text == "") { MessageBox.Show("Необходимо заполнить все поля"); return; }
if (!File.Exists("users.txt")) { File.Create("users.txt").Close(); }
string Login = textBox6.Text;
int Pswrd = textBox7.Text.GetHashCode();
//Проверка на наличие зарегистрированного пользователя
StreamReader sr = new StreamReader("users.txt");
string Enter = Login;
Regex reg = new Regex(Enter);
bool NoRepeat = true;
string str = sr.ReadLine();
while (str != null)
{
if (reg.IsMatch(str))
{
MessageBox.Show("Пользователь с именем " + Login + " уже существует!");
NoRepeat = false;
break;
}
str = sr.ReadLine();
}
sr.Close();
//Добавление нового пользователя в базу данных
if (NoRepeat)
{
int Dlina = File.ReadAllLines("users.txt").Length;
StreamWriter sw = new StreamWriter("users.txt", true);
sw.WriteLine(Dlina + " " + Login + " " + Pswrd);
sw.Close();
user = true; button4.Enabled = true; button5.Enabled = true;
MessageBox.Show("Регистрация прошла успешно");
}
}
//Класс авторизации
private void button8_Click(object sender, EventArgs e)
{
//Авторизация пользователя
string Login = textBox9.Text;
int Pswrd = textBox10.Text.GetHashCode();
if (textBox9.Text == "" || textBox10.Text == "")
{
MessageBox.Show("Необходимо заполнить все поля");
return;
}
//Если нет файла базы данных
if (!File.Exists("users.txt"))
File.Create("users.txt").Close();
StreamReader sr = new StreamReader("users.txt");
string Enter = Login + " " + Pswrd.GetHashCode();
Regex reg = new Regex(Enter);
//Нахождение пользователя в базе данных - текстовом файле
string str = sr.ReadLine();
while (str != null)
{
if (reg.IsMatch(str))
{
MessageBox.Show("Авторизация выполнена!\n" + "Добро пожаловать, " + Login + "!");
user = true;
tableLayoutPanel6.Visible = false;
tableLayoutPanel1.Visible = true;
tableLayoutPanel2.Visible = true;
tableLayoutPanel3.Visible = true;
tableLayoutPanel4.Visible = true;
toolStrip1.Visible = true;
textBox9.Text = "";
textBox10.Text = "";
break;
}
str = sr.ReadLine();
}
sr.Close();
}
Сведущим просьба помочь разобраться в проблеме и наставить на путь истинный.