Averigüe quién está bloqueando un archivo en un recurso compartido de red

141

Quiero saber quién está bloqueando un archivo en un recurso compartido de red.

Aquí está el problema: el recurso compartido de red está en un NAS, por lo que no puedo iniciar sesión. Necesito una herramienta para averiguar de forma remota quién está bloqueando el archivo. No es práctico reiniciar el NAS cada vez, porque hay varios usuarios.

Handle.exe , Process Explorer y PsFile parecen estar limitados a archivos en la máquina local, por lo que no funcionan para mí.

olorina
fuente

Respuestas:

172

En caso de que alguien busque una solución para esto para un sistema basado en Windows o NAS:

Hay una función incorporada en Windows que le muestra qué archivos en la computadora local están abiertos / bloqueados por una computadora remota (que tiene el archivo abierto a través de un recurso compartido de archivos):

  • Seleccione "Administrar computadora" (Abra "Administración de computadora")
  • haga clic en "Carpetas compartidas"
  • elige "Abrir archivos"

Allí incluso puede cerrar el archivo con fuerza.

Dirk Paessler
fuente
10
Incluso puede usar Acción -> Conectarse a otra computadora al archivo en un NAS, ¡e incluso funciona con nuestro NAT basado en Linux! ¿Por qué no intenté esto antes?
olorin
20
En Windows 2008 R2, vaya a Administrador del servidor> Roles> Servicios de archivos> Administración de almacenamiento y recursos compartidos> haga clic con el botón derecho en SaSM> Administrar archivos abiertos.
Jason Pearce
Simplemente abra una consola MMC y agregue un complemento de carpetas compartidas. Puede conectarse a sistemas remotos.
nizx
2
Para un dominio compartido, esto no funcionó. La redacción parece implicar archivos ubicados en sus recursos compartidos de red.
kevinf
1
Utilicé una aplicación llamada Unlocker para hacer esto (el archivo estaba en el NAS). La aplicación está aquí: filehippo.com/download_unlocker/tech y funcionó para mí, pero no puedo responder por esta aplicación
Dan
58

En los servidores Windows 2008 R2, tiene dos medios para ver qué archivos están abiertos y cerrar esas conexiones.

Vía gestión de almacenamiento y acciones

Administrador del servidor> Roles> Servicios de archivos> Administración de almacenamiento y recursos compartidos> haga clic con el botón derecho en SaSM> Administrar archivo abierto

Vía OpenFiles

CMD> Openfiles.exe / query / s SERVERNAME

Ver http://technet.microsoft.com/en-us/library/bb490961.aspx .

Jason Pearce
fuente
2
Gran respuesta. No sabía sobre Openfiles; funciona mucho mejor que tener que usar psexec o herramientas remotas similares.
twasbrillig
@twasbrillig ok, pero si es un NAS, y no basado en Windows! C: \> Openfiles.exe / query / s 10.0.0.1 <ENTER> ERROR: El sistema de destino debe ejecutar Windows XP o superior.
barlop
Vale la pena notar que los nodos "Roles", etc., se expanden con retraso.
SerG
Gracias por esto, openfiles.exe también funciona en Windows Server 2012 R2. No pude encontrar ninguna otra buena guía sobre cómo enumerar los archivos abiertos de un servidor de 2012, pero esto funcionó.
Oldskool
Buen comando CMD, ¡gracias por compartir! Windows 10 Enterprise viene con Openfiles.exe listo para usar.
Leo Gurdian
25

PsFile funciona en máquinas remotas. Si mi cuenta de inicio de sesión ya tiene acceso al recurso compartido remoto, puedo ingresar:

psfile \\remote-share

(reemplace "recurso compartido remoto" con el nombre de su servidor de archivos) y mostrará una lista de todos los documentos abiertos en ese recurso compartido, junto con quién lo tiene abierto y la ID del archivo si deseo forzar el archivo cerrado. Para mí, esta es una lista muy larga, pero se puede reducir al ingresar parte de un camino:

psfile \\remote-share I:\\Human_Resources

Esto es un poco complicado, ya que en mi caso este recurso compartido remoto está montado como Z: en mi máquina local, pero psfile identifica las rutas tal como están definidas en el servidor de archivos remoto, que en mi caso es yo: (el suyo será diferente) . Solo tuve que revisar los resultados de mi primera ejecución de psfile para ver algunas de las rutas que devolvió y luego volver a ejecutarlas con una ruta parcial para reducir los resultados.

Opcionalmente, PsFile le permitirá especificar credenciales para el recurso compartido remoto si necesita proporcionarles acceso.

Por último, un consejo poco conocido: si alguien hace clic en un archivo en el Explorador de Windows y corta o copia el archivo con la intención de pegarlo en otro lugar, esa acción también bloquea el archivo.

Baodad
fuente
se supone que hay doble \ s?
PsychoData
@PsychoData, ha pasado un tiempo desde que publiqué esto. Espero que lo que publiqué sea correcto. El \\ antes de la parte de compartir remotamente se ve bien, pero el \\ en I: \\ Human_Resources se ve raro. Aún así, creo que tenía una razón para ello cuando publiqué. Inténtalo y me cuentas.
Baodad
14

Si se trata simplemente de saber / ver quién está en un archivo en un momento determinado (y si está usando Windows), simplemente seleccione el archivo 'ver' como 'detalles', es decir, en lugar de miniaturas, mosaicos o iconos, etc. Una vez en la vista 'detalles', por defecto se le mostrará; - Nombre de archivo - Tamaño - Tipo y - Fecha de modificación

Todo lo que necesita hacer ahora es hacer clic con el botón derecho en cualquier parte de dicha barra de herramientas (nombre de archivo, tamaño, tipo, etc.) y se le dará una lista de otras opciones que la barra de herramientas puede mostrar.

Seleccione 'Propietario' y una nueva columna mostrará el nombre de usuario de la persona que usa el archivo o quién lo creó originalmente si nadie más lo está usando.

Esto puede ser particularmente útil cuando se usa una base de datos compartida de MS Access.

Jones
fuente
44
En mi caso no funcionó. Agrego la columna y me veo a mí mismo como el creador del archivo compartido en el recurso remoto, pero ya estaba bloqueado por un compañero de trabajo.
David Oliván Ubieto
55
Esto realmente solo funciona bien cuando el programa en el que están crea un archivo de bloqueo (como MS Access) que será propiedad de quien lo esté usando y no del creador original del archivo
PsychoData
1
Para guardar la adición de la columna, puede ver la misma información si ve las propiedades del archivo y mira la pestaña Detalles.
Malvineous
Esto funciona muy bien para cosas como archivos de MS Word.
Tridus
5

Las sesiones son manejadas por el dispositivo NAS. Lo que está preguntando depende del dispositivo NAS y no tiene nada que ver con Windows. Tendría que echar un vistazo a su firmware NAS para ver qué es compatible. La única otra forma es oler los paquetes y resolverlo usted mismo.


fuente
Bueno, esta es una buena respuesta con sentido común. Lamentablemente, este NAS no ofrece esta funcionalidad.
olorin
5

Respuesta parcial: con Process Explorer, puede ver los identificadores en un recurso compartido de red abierto desde su máquina .

Use el menú "Buscar controlador" y luego puede escribir una ruta como esta

\Device\LanmanRedirector\server\share\
olorina
fuente
2

Parece que tienes el mismo problema que intenté resolver aquí . en mi caso, es un servidor de archivos Linux (ejecutando samba, por supuesto), así que puedo iniciar sesión y ver qué proceso está bloqueando el archivo; desafortunadamente, no he encontrado cómo cerrarlo sin matar la sesión responsable. AFAICT, el cliente de Windows 'piensa' que está cerrado; pero no se molestó en decirle al servidor de archivos.

Javier
fuente
Suena probable: que yo sepa, nuestro NAS utilizó una distribución personalizada de Linux.
olorin