Что заставляет xcopy сообщать мне, что доступ запрещен?

StackOverflow https://stackoverflow.com/questions/659463

  •  20-08-2019
  •  | 
  •  

Вопрос

Задача postbuild для одного из наших решений использует xcopy для перемещения файлов в общий каталог для артефактов сборки.По какой-то причине на моем компьютере (и на виртуальной машине, которую я тестировал) xcopy завершается с ошибкой "Доступ запрещен".Вот что я сделал, чтобы попытаться изолировать проблемы:

  • Я попробовал обычную копию;это работает.
  • Я дважды проверил, что ни один из рассматриваемых файлов не был доступен только для чтения.
  • Я проверил разрешения как для исходной, так и для целевой папки;Я полностью контролирую и то, и другое.
  • Я попытался вызвать xcopy из командной строки на случай, если процесс сборки VS заблокировал файл.
  • Я использовал Unlocker и Process Explorer, чтобы определить, что в исходном файле не было блокировок.

Что я пропустил, кроме параноидальных теорий заговора с участием компьютеров, стремящихся добраться до меня?Это происходит на моей машине разработчика и чистой виртуальной машине, но не делает произойдет с кем-либо еще в проекте.

Это было полезно?

Решение

Проблема решена;в головоломке есть две части.

Для переключения / O требуется повышение прав в Vista.Кроме того, я заметил, что xcopy устарел в Vista в пользу robocopy.Сейчас я разговариваю об этом с нашими инженерами-сборщиками.

Другие советы

/r = Используйте эту опцию для перезаписи файлов, доступных только для чтения, в пункте назначения.Если вы не используете эту опцию, когда хотите перезаписать файл, доступный только для чтения в destination вам будет предложено сообщение "Доступ запрещен" и команда xcopy прекратит выполнение.

Это было мое решение этой ошибки.

Источник

Вам нужно запустить XCOPY от имени администратора, обойти это невозможно.

Если вы не хотите запускать свою копию от имени администратора, то вы должны использовать РОБОКОПИЯ вместо этого.

Однако обратите внимание, что с ROBOCOPY очень заманчиво использовать /COPYALL switch, который также копирует информацию об аудите и требует "Управлять правами пользователя аудита", что снова предлагает вам работать от имени администратора в качестве быстрого решения.Если вы не хотите запускать свою копию от имени администратора, то не используйте в /COPYALL (или /Copy:DATSOU) переключатель.Вместо этого используйте /Copy:DATSO, поскольку U означает аудит.

Также обратите внимание, что при копировании из NTFS в файловую систему FAT вы не сможете "Скопировать NTFS Security в целевой каталог / файл".

Обычно это происходит из-за того, что другой процесс блокирует файл.Бьюсь об заклад, у вашей машины другое количество ядер / иная скорость, чем у других.Попробуйте вставить несколько спящих режимов, чтобы посмотреть, решит ли это проблему.

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

если вы копируете файл в папку IIS, то вам необходимо запустить пакетный файл от имени администратора.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top