С# - UnauthorizedAccessException в Directory.CreateDirectory()

100
16

Я новичок в С#, но, полагаю, я использую простую команду в 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);
}
}

спросил(а) 2021-01-25T18:31:25+03:00 4 месяца, 3 недели назад
1
Решение
88

Это исключение обычно означает, что учетная запись, с которой работает программа (по умолчанию зарегистрированная учетная запись пользователя), не имеет правильных разрешений для создания именованного каталога.

MSDN имеет это сказать об UnauthorizedAccessException в документации для Directory.CreateDirectory:


У вызывающего абонента нет требуемого разрешения.

Предоставьте учетной записи правильные разрешения, и все будет хорошо.

ответил(а) 2021-01-25T18:31:25+03:00 4 месяца, 3 недели назад
63

Если это не ответ Oded, тогда проблема может быть местом EXE файла. Если он будет запущен из сетевого тома, его разрешения будут ниже.

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

Справка:

http://msdn.microsoft.com/en-us/library/h4fa028b(v=vs.80).aspx

Кроме того, если вы находитесь в Vista или Windows 7, ваше приложение не сможет писать/создавать что-либо в каталоге Program Files, если вы не запустите его как администратор.

ответил(а) 2021-01-25T18:31:25+03:00 4 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема