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:

Звонящий не имеет необходимого разрешения.

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

Другие вопросы по тегам