2009-03-18 370 views
12

La tarea de postconstrucción para una de nuestras soluciones utiliza xcopy para mover archivos a un directorio común para artefactos de compilación. Por alguna razón, en mi computadora (y en una VM que probé), la xcopy falla con "Acceso denegado". Esto es lo que he hecho para tratar de aislar los problemas:¿Qué está causando que xcopy me diga Acceso denegado?

  • He intentado una copia normal; esto funciona.
  • Comprobé dos veces que ninguno de los archivos en cuestión era de solo lectura.
  • Comprobé los permisos en la carpeta de origen y de destino; Tengo el control total de ambos.
  • Intenté llamar a la xcopy desde la línea de comandos en caso de que el proceso de compilación VS haya bloqueado el archivo.
  • Utilicé Unlocker y Process Explorer para determinar que no había bloqueos en el archivo fuente.

¿Qué me he perdido, aparte de teorías de conspiración paranoica involucrando computadoras para conseguirme? Esto sucede en mi máquina de desarrollo y en una máquina virtual limpia, pero no ocurre con para nadie más en el proyecto.

+0

¿Está seguro de que el proceso de xcopy se está ejecutando en su cuenta de usuario? – NotMe

+0

Publique la línea de comando que está intentando ejecutar, así como el mensaje de error exacto. –

Respuesta

13

Problema resuelto; hay dos piezas en el rompecabezas.

El modificador/O requiere elevación en Vista. Además, noté que xcopy está en desuso en Vista a favor de robocopy. Ahora estoy hablando con nuestros ingenieros de construcción sobre esto.

2

Normalmente esto ocurre porque hay otro proceso que bloquea el archivo. Apuesto a que su máquina tiene un número diferente de núcleos/velocidad diferente a los demás. Intenta insertar algunos sleeps para ver si resuelve el problema.

+0

¿Podría explicar el tema de los núcleos múltiples? xcopy también falla en la línea de comandos, incluso si VS no está abierto. Herramientas como Unlocker dicen que nada está bloqueando el archivo. No hay lugar para dormir. – OwenP

+0

Según su descripción, parece que está en medio de una automatización de compilación. Windows es conocido por ser notoriamente malo en esto, debido al bloqueo de archivos. Supongo que algún proceso previo que comenzó en algunos casos no está totalmente terminado cuando comienza la copia. – krosenvold

0

Si puede eliminar el archivo en el Explorador de Windows, intente utilizar un símbolo del sistema elevado. No estoy seguro de por qué Windows Explorer no pide permiso aquí para una operación de eliminación que necesita derechos de administrador a través de cmd.

6

/r = Utilice esta opción para sobrescribir los archivos de solo lectura en el destino. Si no usa esta opción cuando desea sobrescribir un archivo de solo lectura en el destino, se le preguntará con un mensaje de "Acceso denegado" y el comando xcopy dejará de ejecutarse.

Esa fue la resolución mía de este error.

Source

+2

Gracias, esto me ayudó. – ziddarth

+0

Eso también me solucionó el problema, incluso cuando el archivo de destino no aparecía como 'solo' ... –

+0

Eso funcionó para mí también. – te7

1

necesita ejecutar XCOPY como administrador, no hay forma de evitar esto.

Si no desea ejecutar su copia como administrador, debe utilizar ROBOCOPY en su lugar.

Tenga en cuenta, sin embargo, que con ROBOCOPY es muy tentador utilizar el conmutador /COPYALL, que copia también la información de auditoría y requiere "Gestionar el derecho de usuario de auditoría", que nuevamente lo invita a ejecutar como administrador una solución rápida. Si no desea ejecutar su copia como administrador, entonces no use el interruptor /COPYALL (o /Copy:DATSOU). En su lugar, use /Copy:DATSO, ya que la U significa AUditing.

También tenga en cuenta que si está copiando desde NTFS a un sistema de archivos FAT, no hay forma de que pueda "Copiar la seguridad NTFS al directorio/archivo de destino".

Cuestiones relacionadas