Доступ к пути запрещен при загрузке файла в программные файлы \ в какую-либо коммерческую программу - PullRequest
0 голосов
/ 22 октября 2011

Я получаю сообщение об ошибке:

Access to the path 'C:\Program Files (x86)\MetaTrader FIX\experts\indicators\Awesome.ex4' is denied./n   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath)
   at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options)
   at System.IO.File.Create(String path)
   at Iron_loader.Program.Main(String[] args) in C:\Users\Damian\Documents\Visual Studio 2010\Projects\Iron loader\Iron loader\Program.cs:line 55

при запуске exe-файла из \ bin \ Debug.Я не знаю, почему это так.В папке назначения такого файла нет, поэтому я думаю, что есть проблема с безопасностью, потому что когда я запускаю свою программу из VS от имени администратора, все идет нормально.

Я пытаюсь загрузить файлы в папкудругая программа (не моя).Как я могу скопировать этот файл?

File.Create(newPath);
File.Copy(pathOfFileFromMyDebugDirectory, newPath);

Ответы [ 3 ]

2 голосов
/ 22 октября 2011

если операционная система и следующая WindowsXP, epoxy не будет читать и записывать в C: \ ProgramFilesx86, потому что uac.

Вы должны запустить свое приложение с правами администратора.

С уважением.

2 голосов
/ 22 октября 2011

Проверьте права доступа к папке. У пользователя нет прав на изменение / полный доступ.

Выберите свойство в папке, затем перейдите на вкладку Безопасность и проверьте разрешения для текущего пользователя или пользователя вашего приложения. работает как.

1 голос
/ 22 октября 2011

... см. Изменить ниже

Я считаю, что отчасти проблема в том, что «процесс» еще не освободил дескриптор файла.Попробуйте это:

using (Stream stream = File.Create(newPath))
{}

File.Copy(pathOfFileFromMyDebugDirectory, newPath);

Как только вы нажмете на закрывающую скобку в блоке using, вызывается метод базового потока Dispose() и все ресурсы, включая дескриптор файла процесса, должны быть освобождены.

Редактировать
Получаете ли вы исключение при вызове File.Create?Я неправильно понял ошибку, которую вы дали.Если вы получаете исключение в методе Create (), вам необходимо убедиться, что у вас есть права до , записывающие в путь.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...