En C++ (específicamente en Visual C++), a veces no puede abrir un archivo porque se ha abierto otro ejecutable y no lo está compartiendo para lecturas. Si intento abrir un archivo de este tipo, ¿cómo puedo averiguar programáticamente quién está bloqueando el archivo?Win32 archivos bloqueados para leer: cómo saber quién los está bloqueando
Respuesta
En Windows 2000 y versiones posteriores, no puede hacer esto sin utilizar un controlador en modo kernel. Process Explorer y otras herramientas similares cargan un controlador automáticamente para lograr esto. Esto se debe a que los manejadores de archivo están en el espacio del núcleo y no son accesibles para las aplicaciones en modo de usuario (archivos EXE).
Si está realmente interesado en hacer esto, eche un vistazo a this project.
La forma aprobada de MSDN es IFileIsInUse::GetAppName()
. Requiere Vista, sin embargo.
Esto parece requerir la cooperación del programa que abrió un archivo, que no es lo mismo que se está pidiendo. – Mehrdad
Es la forma más rica en información, por lo que debe probarlo primero. – MSalters
Claro, no hay nada de malo en probarlo, pero las posibilidades de que funcione son muy bajas, por lo que es probable que el OP necesite una alternativa. – Mehrdad
- 1. Herramienta de línea de comandos para averiguar quién está bloqueando un archivo
- 2. ¿Cómo puedo saber si un cliente web está bloqueando anuncios?
- 3. ¿Cómo saber quién me está importando en python?
- 4. ¿Cómo saber qué hilo está bloqueando un archivo en Java?
- 5. Cómo saber quién está conectado a SQL Server
- 6. Averigüe quién está bloqueando un archivo en un recurso compartido de red
- 7. Buscar todos los archivos bloqueados en TFS
- 8. ¿Qué está bloqueando fsockopen?
- 9. Cómo saber quién mata a mis hilos
- 10. ¿Cómo puedo saber quién llamó a SendMessage?
- 11. ¿Eliminar archivos bloqueados con Java?
- 12. ¿Cómo saber quién llamó a un método?
- 13. msbuild.exe permaneciendo abierto, bloqueando archivos
- 14. Eliminación de archivos y carpetas bloqueados
- 15. Usando IsolationLevel.Snapshot pero DB todavía está bloqueando
- 16. ¿Cómo sabes quién está arreglando la compilación?
- 17. cómo encontrar quién bloquea quién en SQL Server 2005
- 18. ¿Quién debería saber sobre el otro?
- 19. ¿Cómo saber quién es el proveedor de ROM?
- 20. ¿Cómo usar EMF para leer archivos XML?
- 21. ¿Cómo saber quién ejecutó el comando TFS Destroy?
- 22. ¿Cómo puedo saber quién ha bifurcado mi repositorio en GitHub?
- 23. ¿Cómo se interrumpe una BlockingQueue que está bloqueando en take()?
- 24. glassPane no está bloqueando la entrada
- 25. ¿Cómo puedo determinar programáticamente qué aplicación está bloqueando un archivo?
- 26. Determine qué proceso está bloqueando el portapapeles
- 27. Cómo saber qué optimizaciones está usando bjam para generar impulso
- 28. ¿Quién está manipulando mi secuencia de datos?
- 29. Qué recursos capturan los hilos bloqueados
- 30. iphone/ipad - padre UIView está bloqueando los toques para llegar a las subvistas - ¿por qué?
Puede ver que Process Explorer está cargando un controlador mirando los archivos DLL del proceso 'System'; verá un controlador similar a 'PROCEXP113.SYS' cargado –