C# - UnauthorizedAccessException в Directory.CreateDirectory()
Я новичок в C#, но я предполагаю, что я использую простую команду в Directory.CreateDirectory, и пока я только собирал свой собственный ПК, все было хорошо. Но когда я опубликовал его и открыл приложение на другом ПК, оно выкинуло это исключение, и я не нашел ответов о том, как это исправить в исходном коде. Я пытался запустить его как администратор в Win7, но тоже не сработало. Вот код Это на португальском, но я не думаю, что это будет проблемой:)
Большое спасибо всем вам.
string diretorio = @"C:\Program Files\LAPER\EqNumDPI\Edifícios\" + NomeEdificio;
if (MessageBox.Show("Você tem certeza de que inseriu os dados corretamente?\nEsses campos não poderão ser alterados posteriormente.",
"[LAPER] Cálculo do EqNumDPI", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning,
MessageBoxDefaultButton.Button2) == DialogResult.OK)
{
TelaAdicionarAmbiente Tela = new TelaAdicionarAmbiente();
if (!Directory.Exists(diretorio))
{
Directory.CreateDirectory(diretorio);
StreamWriter file2 = new StreamWriter(@"C:\Program Files\LAPER\EqNumDPI\Edifícios\"+NomeEdificio+"\\metodo.txt", true, Encoding.ASCII);
if (rBArea.Checked) file2.Write("AREA");
else file2.Write("ATIVIDADE");
file2.Close();
this.Close();
}
else
{
MessageBox.Show("Nome de edifício já existe.\nPor favor, insira outro nome.",
"[LAPER] Cálculo do EqNumDPI",MessageBoxButtons.OK,MessageBoxIcon.Stop);
}
}
2 ответа
Если это не ответ Одеда, то проблема может быть в расположении exe-файла. Если он запускается с сетевого тома, его разрешения будут ниже.
Вы должны изучить ключи со строгим именем, использовать их для подписи своих приложений и работать с сетевым администратором, чтобы "доверять" сборкам, подписанным этим ключом со строгим именем.
Ссылка:
http://msdn.microsoft.com/en-us/library/h4fa028b(v=vs.80).aspx
Кроме того - если вы работаете в Vista или Windows 7, ваше приложение не сможет ничего написать / создать в каталоге Program Files, если вы не запустите его от имени администратора.
Это исключение обычно означает, что учетная запись, под которой запускается программа (по умолчанию учетная запись пользователя, вошедшего в систему), не имеет правильных разрешений для создания именованного каталога.
MSDN имеет это сказать о UnauthorizedAccessException
в документации для Directory.CreateDirectory
:
Звонящий не имеет необходимого разрешения.
Предоставьте учетной записи правильные разрешения, и все будет хорошо.