2013-06-08 2 views
0

Привет Я хочу создать программу, которая сохраняет файл в мои документы \ test. Файл является .exe. По какой-то неизвестной причине я получаю ошибку отказа в доступе, когда я тестировал программу, пытающуюся сохранить файл .txt (используя StreamWriter), программа работала без проблем. Пожалуйста, помогите мне, ребята.доступ запрещен при сохранении file.exe в мои документы

Приведенный ниже код выдает ошибку

byte[] myfile = Properties.Resources.WallPaper; 
     string path = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); 
     string path2 = path + @"\" + "test"; 
     System.IO.Directory.CreateDirectory(path2); 
     File.WriteAllBytes(path2, myfile); 

Приведенный ниже код работает отлично, при сохранении файла .txt

string path = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); 
     string path2 = path + @"\" + "test"; 
     System.IO.Directory.CreateDirectory(path2); 
     StreamWriter file = new StreamWriter(path2 + @"\" + "text.txt"); 
+0

можете ли вы опубликовать исключение, которое вы получаете, чтобы у нас была лучшая картина –

+0

unauthorizedAccessExepetion - Доступ к пути 'C: \ Users \ michael \ Documents \ test' отрицается – misha312

ответ

2

Ваши два примера не являются одинаковыми. Ваш первый пример не работает, потому что System.IO.Directory.CreateDirectory уже создал каталог с именем test. Вы не можете перезаписать этот каталог, как если бы это был файл. Для того, чтобы сделать ваш пример 1, ведет себя, как, например, два:

System.IO.Directory.CreateDirectory(path2) 
File.WriteAllBytes(path2 + @"\" + "text.txt", myfile) 
+0

Я не понимаю, почему ... когда я пытаюсь сохранить файл в D, он отлично работает – misha312

+0

@ misha312 записывает файл внутри каталог не совпадает с записью файла по существующему каталогу. Так же, как упражнение, чтобы вы могли видеть мою мысль, создайте файл (вручную, а не через вашу программу) с именем 'Test', и попробуйте скопировать и вставить этот файл' Test' в папку, в которой уже есть каталог с именем 'Test' , – Tung

0

я никогда не пытался писать в исполняемом файле, но вы уже пробовали установить разрешение? Я не знаю, есть ли в C# exisist какой-то метод, который это делает, но, безусловно, существует «exec», поэтому вы можете использовать его для отправки команды chmod