Интересно, есть ли у кого-нибудь подобная проблема.File.Copy throws UnauthorizedAccessException
У меня есть простой код копирования файлов в моем приложении, который можно упростить, как показано ниже (и мой пользователь, которого я открыл VS2013 для отладки кода, имеет полный контроль над иерархией исходных и целевых папок - это было не так для какой-то причине, я попытался запустить VS в режиме администратора, который не работает, то я вручную применяется полный контроль для пользователя, и в любом случае ошибка жалуется на исходную папку)
// sourcefile was thought to be @"C:\tfs\Dev\Source\some-module\bin\Debug\mybinary.dll";
// retrieved through an environment variable, but was pointing to the folder instead of the file inside
Directory.CreateDirectory(myfolder);
File.Copy(sourcefile, Path.Combine(myfolder, Path.GetFileName(sourcefile)), true);
Этот код работал счастливо до I попробовал это сегодня на моей локальной машине (и все еще работает на моей тестовой машине). Но по какой-то причине, он начал бросать ошибку ниже:
System.UnauthorizedAccessException: Access to the path 'C:\tfs\Dev\Source\some-module\bin\Debug' is denied.
Result StackTrace:
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.File.InternalCopy(String sourceFileName, String destFileName, Boolean overwrite, Boolean checkHost)
at System.IO.File.Copy(String sourceFileName, String destFileName, Boolean overwrite)
Думая, что это может быть проблемой файл блокировки я перезагрузился и попытался снова заново, но потерпел неудачу.
Папка для источника имеет атрибут только для чтения и думает, что это может быть проблемой (что странно), я начал пытаться отключить его, но не могу. Затем я переместил папку из рабочей области tfs в другую папку (в разделе c: \ users \ my-user ..) и по-прежнему не может удалить атрибут только для чтения (кажется, он работает, но проверка снова показывает тот же атрибут на файл). Я даже отчаянно пытался отключить чтение только для всех родительских папок, а затем сдался, как в венах. И никоим образом не должно быть связано с исходной проблемой.
Я дважды проверял подобные вопросы и мысли, и у меня заканчиваются варианты.
Win7, .net 4.5.2, VS2013 - это некоторые конфигурации.
дополнительные эксперименты, обновить Я попытался с помощью Directory.CreateDirectory на каталоге Исходный_файла с правилами безопасности с полным разрешения на текущий пользователь, ничего не меняет. Зачем ему жаловаться на каталог исходного файла, чтобы начать с?
Это означает, что текущий пользователь не имеет права на запись в этом каталоге. Сначала установите разрешение учетной записи пользователя, на которой выполняется приложение. –
Предложения: a) Файл проверки не существует в пункте назначения; b) отскакивать одну секунду и повторять попытку, поскольку AV может сканировать файл и временный доступ к блокировке. –
Ниранджан. В первом абзаце я упомянул о полном контроле пользователя. Хорхе, хорошая идея об AV, я проверю! – MattAPiroglu