windows - tagger - tag folders
¿Cómo puedo determinar si un archivo específico está abierto en Windows? (10)
Una de mis herramientas favoritas para Linux es lsof , ¡una verdadera navaja suiza!
Hoy me encontré preguntándome qué programas en un sistema WinXP tenían un archivo específico abierto. ¿Hay alguna utilidad equivalente a lsof? Además, el archivo en cuestión tenía más de un recurso compartido de red, así que no estoy seguro si eso complica las cosas.
En OpenedFilesView , en el menú Opciones, hay un elemento de menú llamado "Mostrar archivos de red". Tal vez con eso habilitado, la utilidad antes mencionada es de alguna utilidad.
Hay un programa "OpenFiles", parece ser parte de Windows 7. Parece que puede hacer lo que quieras. Puede enumerar los archivos abiertos por usuarios remotos (mediante el uso compartido de archivos) y, después de llamar a "archivos abiertos / Local activado" y a un reinicio del sistema, debe poder mostrar los archivos abiertos localmente. Se dice que este último tiene sanciones de rendimiento.
Prueba Unlocker .
El sitio Unlocker tiene un gráfico ingenioso (desplácese hacia abajo después de seguir el enlace) que muestra una comparación con otras herramientas. Obviamente, tales comparaciones suelen ser parciales, ya que normalmente las escribe el autor de la herramienta, pero la tabla al menos enumera las alternativas para que pueda probarlas usted mismo.
Si el archivo es .dll, entonces puede usar la aplicación de línea de comandos TaskList para ver quién lo abrió.
TaskList /M nameof.dll
Si hace clic con el botón derecho en el ícono "Ordenador" (o "Mi PC") y selecciona "Administrar" en el menú emergente, eso lo llevará a la consola de Administración de equipos.
Allí, en Herramientas del sistema / Carpetas compartidas, encontrará "Archivos abiertos". Probablemente esté cerca de lo que desea, pero si el archivo está en una red compartida, entonces tendría que hacer lo mismo en el servidor en el que vive el archivo.
Un equivalente de lsof podría ser resultado combinado de Sysinternals '' handle y listdlls , es decir:
c:/SysInternals>handle
[...]
------------------------------------------------------------------------------
gvim.exe pid: 5380 FOO/alois.mahdal
10: File (RW-) C:/Windows
1C: File (RW-) D:/some/locked/path/OpenFile.txt
[...]
c:/SysInternals>listdlls
[...]
------------------------------------------------------------------------------
Listdlls.exe pid: 6840
Command line: listdlls
Base Size Version Path
0x00400000 0x29000 2.25.0000.0000 D:/opt/SysinternalsSuite/Listdlls.exe
0x76ed0000 0x180000 6.01.7601.17725 C:/Windows/SysWOW64/ntdll.dll
[...]
c:/SysInternals>listdlls
Lamentablemente, debe "ejecutar como administrador" para poder usarlos.
Además, listdlls y handle no producen una forma continua de tabla, por lo que al filtrar el nombre de archivo se ocultaría el PID. findstr /c:pid: /c:<filename>
debería findstr /c:pid: /c:<filename>
mucho con ambas utilidades, aunque
c:/SysinternalsSuite>handle | findstr /c:pid: /c:Driver.pm
System pid: 4 /<unable to open process>
smss.exe pid: 308 NT AUTHORITY/SYSTEM
avgrsa.exe pid: 384 NT AUTHORITY/SYSTEM
[...]
cmd.exe pid: 7140 FOO/alois.mahdal
conhost.exe pid: 1212 FOO/alois.mahdal
gvim.exe pid: 3408 FOO/alois.mahdal
188: File (RW-) D:/some/locked/path/OpenFile.txt
taskmgr.exe pid: 6016 FOO/alois.mahdal
[...]
Aquí podemos ver que gvim.exe es el que tiene este archivo abierto.
Use Process Explorer desde la Suite Sysinternals, la función Find Handle o DLL le permitirá buscar el proceso con ese archivo abierto.
Use Process Explorer para encontrar la identificación del proceso. A continuación, use el control para averiguar qué archivos están abiertos.
Por ejemplo, manejar -p
Me gusta este enfoque porque está utilizando utilidades de Microsoft.
El equivalente de lsof -p pid
es la salida combinada de sysinternals handle y listdlls, es decir,
handle -p pid
listdlls -p pid
puedes encontrar pid con sysinternals pslist
.