Título: Obtener ruta y nombre de archivo por el PID Publicado por: Distorsion en 12 Enero 2011, 15:26 pm Buenas,
estoy obteniendo unos PIDs de proceso y me gustaría obtener la ruta y el nombre del archivo en modo usuario. He estado buscando pero no he visto una API que lo haga directo, alguien conoce alguna? O tendré que recorrer la lista de procesos buscando el proceso que coincida con el PID y buscarme la vida? Gracias ;-) Título: Re: Obtener ruta y nombre de archivo por el PID Publicado por: Littlehorse en 12 Enero 2011, 16:12 pm Código
Título: Re: Obtener ruta y nombre de archivo por el PID Publicado por: Distorsion en 12 Enero 2011, 16:28 pm Código: #include <windows.h> Ya lo intente con este código, pero no me devuelve una ruta ni nada, me falla la función :( Igualmente de esta manera hay que hacer un openproces con lo que no podre abrir cualquier proceso, por ejemplo el lsa.exe y no podre obtener su ruta. Para solucionar esto ultimo estoy pensando en lanzar la aplicación en modo system, que nos e como, o directamente sacar la ruta desde el driver, ya que el pid lo saco desde el driver y lo comunico a una aplicación en modo usuario. Gracias por la ayuda. Título: Re: Obtener ruta y nombre de archivo por el PID Publicado por: Littlehorse en 12 Enero 2011, 17:09 pm Claro que va a fallar. Tenes que usar GetModuleFileNameEx, no GetModuleFileName. De hecho ni siquiera son los mismos parámetros, lee la documentación de la MSDN.
Código
Citar To locate the file for a module that was loaded by another process, use the GetModuleFileNameEx function. hModule [in, optional] A handle to the module. If this parameter is NULL, GetModuleFileNameEx returns the path of the executable file of the process specified in hProcess. Citar Igualmente de esta manera hay que hacer un openproces con lo que no podre abrir cualquier proceso, por ejemplo el lsa.exe y no podre obtener su ruta. En el ejemplo yo puse PROCESS_ALL_ACCESS para escribir menos pero lo correcto es utilizar solo lo necesario, lo cual en el caso de GetModuleFileNameEx es PROCESS_QUERY_INFORMATION y PROCESS_VM_READ por lo que no debería haber demasiado problema con la mayoría de los procesos y en caso de haberlo te basta con ajustar los privilegios correctamente. Por otro lado, obviamente existe una limitación al querer hacerlo desde modo usuario, pero eso es un tema aparte. La limitación la instalas vos desde un principio al querer hacerlo desde modo usuario. Saludos Título: Re: Obtener ruta y nombre de archivo por el PID Publicado por: Distorsion en 13 Enero 2011, 02:01 am Es verdad :-[ No era la misma función :-[ Ya lo he solucionado, aunque los procesos en modo system no puedo listar su ubicación, no puedo usar openproces correctamente y nose como ajustar los privilegios de mi aplicación a system :-[
Lo he querido hacer en modo usuario por que no he encontrado la manera de hacerlo en el driver, tengo un el major de un driver hookeado y no he sido capaz de sacar el path de las aplicaciones que lo usan, solo sacar el PID con PsGetCurrentProcessId(). Gracias por la ayuda ;-) Título: Re: Obtener ruta y nombre de archivo por el PID Publicado por: Distorsion en 13 Enero 2011, 15:11 pm Solucionado! Ya se ponerle privilegios de depuración, el problema es que tengo que darle al botón derecho y ejecutar como administrador, alguna solución a eso? Sino es un engorro si quiero automatizar la ejecución.
Gracias ;-) |