Я пытаюсь использовать File.Move для перемещения файла из одного расположения UNC в другое. Это сработает, если путь UNC для места назначения окажется локальным компьютером (ошибка: доступ к пути запрещен). Пример File.Move(@"\\someServer\path\file.txt", @"\\blah2\somewhere\file.txt")
. Предполагается, что где-то есть сетевой ресурс с именем \\ someServer, а имя моей локальной машины - blah2. Измените \\ blah2 на C: \ и все будет хорошо.
File.Move не работает должным образом для путей UNC
Ответы (6)
Может, это опечатка, но разве не @"\\blah2\somewhere\file.txt"
, т.е. с двумя обратными косыми чертами?
Разве имя сервера в вашем пути unc не должно начинаться с двух косых черт?
например, @ "\\ someServer \ path \ file.txt"
Для общего файлового ресурса Windows для доступа на запись необходимо указать разрешение в одном дополнительном месте (кроме ACL) - в разрешениях для общего ресурса. Если вы используете административный общий ресурс, такой как C $, тогда доступ на запись уже включен, но если вы используете общий ресурс, который был явно настроен для этого, убедитесь, что опция «Изменить» включена в разделе «Разрешения на общий ресурс».
Обратите внимание, что вы часто можете устранить ошибки разрешений, проверив журнал событий безопасности в разделе «Управление компьютером» -> «Просмотр событий». Там могут быть дополнительные сведения о том, как это происходит. Включение аудита сбоев входа в систему в разделе «Администрирование» -> «Локальная политика безопасности» -> «Локальные политики» -> «Политика аудита» также может предоставить более подробную информацию в журнале событий.
Кажется, я не могу воспроизвести ошибку. Может это как-то связано с разрешениями? Можете ли вы переместиться в любое место на локальном компьютере, используя адрес UNC, или все они генерируют исключение?
У меня была такая же проблема, и файл был заблокирован другой программой (проводником Windows), в моем случае я разблокировал файл с помощью unlocker. это случилось со мной при доступе к файлу с использованием пути UNC, метод File.Move отлично работает, получая доступ к нему через локальный путь.
Мне кажется странным, что у меня не было такого поведения при ручном переименовании файла через UNC / локальный путь.
File.Move Target Path не принимает UNC-путь
http://support.microsoft.com/KB/112744