Ответ 1
Проблема решена; там две части к загадке.
Переключатель/O требует повышения в Vista. Кроме того, я заметил, что xcopy устарел в Vista в пользу robocopy. Теперь я общаюсь с нашими инженерами по строительству.
Задача postbuild для одного из наших решений использует xcopy для перемещения файлов в общий каталог для сборки артефактов. По какой-то причине на моем компьютере (и на тестируемой виртуальной машине) xcopy не работает с "Access Denied". Вот что я сделал, чтобы попытаться изолировать проблемы:
Что я пропустил, кроме параноидальных теорий заговора с участием компьютеров, чтобы получить меня? Это происходит на моей машине dev и чистой VM, но этого не происходит ни для кого другого в проекте.
Проблема решена; там две части к загадке.
Переключатель/O требует повышения в Vista. Кроме того, я заметил, что xcopy устарел в Vista в пользу robocopy. Теперь я общаюсь с нашими инженерами по строительству.
/r = Используйте эту опцию для перезаписи файлов только для чтения в пункте назначения. Если вы не используете эту опцию, если хотите перезаписать файл только для чтения в пункте назначения вам будет предложено сообщение "Отказано в доступе" и команда xcopy перестанет работать.
Это мое разрешение этой ошибки.
Обычно это происходит потому, что другой процесс блокирует файл. Бьюсь об заклад, у вашей машины разное количество ядер/разная скорость, чем у других. Попробуйте вставить несколько спальных мест, чтобы понять, разрешает ли он проблему.
Вам нужно запустить XCOPY в качестве администратора, нет никакого способа обойти это.
Если вы не хотите запускать свою копию в качестве администратора, тогда вы должны использовать ROBOCOPY.
Обратите внимание, однако, что с ROBOCOPY очень заманчиво использовать коммутатор /COPYALL
, который также копирует информацию аудита и требует "Управление правами на аудит прав пользователя", что снова приглашает вас работать как администратор в качестве быстрого решения. Если вы не хотите запускать свою копию в качестве администратора, то не используйте переключатель /COPYALL
(или /Copy:DATSOU
). Вместо этого используйте /Copy:DATSO
, поскольку U означает aUditing.
Также обратите внимание, что если вы копируете NTFS в файловую систему FAT, вы не можете "Скопировать защиту NTFS в каталог/файл назначения".
Если вы можете удалить файл в Проводнике Windows, попробуйте использовать командную строку с повышенными правами. Не знаю, почему Windows Explorer не запрашивает разрешения здесь для операции удаления, которая требует прав администратора через cmd.