2010-01-02 13 views

Respuesta

11

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.

+0

Puede ver que Process Explorer está cargando un controlador mirando los archivos DLL del proceso 'System'; verá un controlador similar a 'PROCEXP113.SYS' cargado –

3

La forma aprobada de MSDN es IFileIsInUse::GetAppName(). Requiere Vista, sin embargo.

+0

Esto parece requerir la cooperación del programa que abrió un archivo, que no es lo mismo que se está pidiendo. – Mehrdad

+0

Es la forma más rica en información, por lo que debe probarlo primero. – MSalters

+1

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

Cuestiones relacionadas