Pregunta

Este problema surge de vez en cuando en el trabajo. Nuestra máquina de compilación puede tener acceso a sus archivos a través de un recurso compartido de archivos normal de Windows. Si alguien explora una carpeta de forma remota en la máquina y deja la ventana abierta durante la noche, la compilación falla (como lo ha hecho ahora). La ventana del explorador dejó puntos abiertos en una de las subcarpetas del árbol de origen. La compilación elimina la fuente y realiza un pago limpio antes de compilar. La eliminación está fallando.

En este momento, me gustaría que la compilación funcione. He iniciado sesión desde casa y prefiero no reiniciar la máquina de compilación. No puedo localizar a la persona cuya máquina está buscando y los archivos, y no puedo reiniciar su máquina de forma remota.

Cuando un recurso compartido de Windows tiene un bloqueo, el proceso de bloqueo es Sistema, por lo que no creo que pueda eliminarlo, como ocurre con los bloqueos normales.

¿Alguien sabe una forma de liberar el bloqueo en una carpeta compartida sin tener que reiniciar la máquina?

¿Fue útil?

Solución 2

Encontramos una solución.

  1. Encuentre el proceso usando Process Explorer :

    1. Descarga y extrae procexp.exe
    2. En Process Explorer use el " Find Handle o DLL ... " comando desde " Buscar " menú
    3. Ingrese el nombre del directorio que tiene problemas para eliminar
    4. Se debe mostrar una lista de archivos abiertos que coinciden con ese nombre. Haga algunas conjeturas y descubra cuál no se puede eliminar. Si el archivo está bloqueado por un recurso compartido de Windows, el proceso que contiene el archivo será Sistema
    5. Anote el directorio que se dejó abierto
  2. Descargue e instale el Desbloqueador ( Advertencia : Enlace eliminado, ya que contiene malware)

    1. Instalar Unlocker, deshabilitando la opción para extensiones de Explorer y otros archivos basura
  3. Desbloquear el directorio

    1. Abra una ventana de cmd y navegue a C: \ Archivos de programa \ Unlocker
    2. Desde la ventana de cmd, ejecute Unlocker.exe " the-path-to-the-locked-folder "
    3. Aparecerá un cuadro de diálogo confirmando la liberación del bloqueo. Use el botón de desbloqueo para desbloquear el archivo

Ahora el directorio debería estar desbloqueado y ahora se puede eliminar.

Otros consejos

Si es administrador en el servidor que comparte el archivo a través de la red, puede usar la función integrada de Windows:

  1. Inicio ? Mi PC ? Clic derecho ? Administrar lo lleva a la Computadora Consola de gestión
  2. En el navegador de la izquierda, navegue a Herramientas del sistema ? Carpetas compartidas
  3. Puede ver acciones, sesiones y amp; Abre archivos aquí. Esto le permite averiguar quién ha abierto qué archivos desde qué estaciones de trabajo.
  4. Haga clic derecho en un elemento de la lista para poder eliminar el bloqueo del archivo.

Espero que esto ayude.

Prueba Process Hacker: https://wj32.org/processhacker/

Process hacker es como Process Explorer en esteroides.

Para encontrar el proceso ofensivo, presione CTRL + F o haga clic en "Buscar identificadores de archivos DLL". botón y busque el nombre del archivo.

Una vez que encuentre el archivo en el cuadro de diálogo de búsqueda, simplemente haga clic con el botón derecho en el archivo y elija "cerrar". (al menos para v2.39.124)

Las versiones anteriores tenían un "terminador" opción en el menú contextual del proceso.  Haga clic derecho en el proceso ofensivo - > Miscellaneous - > Terminator - > Seleccionar técnicas de terminación . Tenga en cuenta que algunos son posiblemente peligrosos y pueden tener consecuencias no deseadas.

He tenido problemas similares, y ninguna de estas sugerencias que he visto anteriormente parece adecuada para compilaciones automatizadas durante la noche (como lo implica el póster original) porque todas requieren un esfuerzo manual para cazar y matar las cerraduras.

El único método que he probado que parece funcionar de manera confiable es eliminar el recurso compartido en sí, hacer la compilación y luego volver a agregar el recurso compartido. Aquí hay una forma de eliminar el recurso compartido automáticamente:

D: \ Proyectos > Proyectos de acciones netas / ELIMINAR / Y

Los usuarios tienen archivos abiertos en Proyectos. Continuar la operación forzará el cierre de los archivos.

Los proyectos se eliminaron correctamente.

(NOTA: Crear el recurso compartido de nuevo automáticamente puede ser complicado si los grupos de privilegios que necesita otorgarle son desordenados).

La forma en que lo hago es usando OpenFiles.exe y Handle.exe Puede ejecutarlos en cualquier orden y tendrá su recurso completamente desbloqueado.

OpenFiles: para desconectar sesiones de uso compartido de archivos

Handle.exe: para liberar los identificadores abiertos (no intente cerrar los identificadores que pertenecen a pid4, ya que ese es el proceso del sistema)

Puede automatizar esto utilizando powershell, batch o cualquier idioma que elija.

Otra opción es, a partir de Windows Vista, utilizar la herramienta de Windows integrada en el sistema:

recursos del monitor: perfmon.exe / res

Extraído de: Http://www.sysadmit.com/2017/06/windows-how-to-know-that-process-has-open-a-file.html

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top