Estoy tratando de obtener la ruta del proceso por pid, pero obtengo la excepción Win32Exception (acceso denegado).Acceso denegado al obtener la ruta del proceso
El código es el siguiente:
string path = Process.GetProcessById(pid).MainModule.FileName
He intentado usar OpenProcess con GetModuleFileNameEx pero OpenProcess vuelve 0. Incluso he intentado que permite SeDebugPrivilege acuerdo con C# – How to enable SeDebugPrivilege pero no sirvió de nada.
El código anterior funciona para la mayoría de los procesos pero arroja un error para SynTPHelper.exe (Synaptics Pointing Device Helper) La aplicación se ejecuta con el mismo nombre de usuario que mi código. Tanto mi aplicación como el proceso se ejecutan en 64 bits.
¿Es posible recuperar la ruta sin ejecutando mi aplicación como administrador?
Editar
Task Manager es capaz de 'ubicación del archivo abierto' a pesar de que no estoy corriendo como un administrador.
Muchas gracias por http://www.aboutmycode.com/net-framework/how-to-get-elevated-process-path-in-net/ (¿ese es el mismo Giorgi?). Copiar/Pasar/Reformatear/Añadir algunos espacios de nombres y funciona! :) –
@Andreas: Sí, es solo mi blog. – Giorgi
PROCESS_QUERY_LIMITED_INFORMATION = 0x1000; http://msdn.microsoft.com/en-us/library/windows/desktop/ms684880(v=vs.85).aspx – Jason