¿Puedo obtener el nombre de la cuenta de usuario, que ejecutó el proceso con el ID especificado? ¿Hay alguna función de API para esto?Detectando el nombre de usuario del proceso ID
Estoy usando windows, C++.
¿Puedo obtener el nombre de la cuenta de usuario, que ejecutó el proceso con el ID especificado? ¿Hay alguna función de API para esto?Detectando el nombre de usuario del proceso ID
Estoy usando windows, C++.
No hay una función API que lo haga directamente, sin embargo, puede combinar algunas llamadas API para hacer esto. Por supuesto, su programa deberá cumplir con cualquier ACL que se aplique al proceso que le interese examinar.
En primer lugar, dado el ID del proceso, deberá abrir un identificador para el proceso. Puede usar OpenProcess
para eso, solicitando el derecho de acceso PROCESS_QUERY_INFORMATION
.
Una vez que tenga ese asa, puede llamar al OpenProcessToken
, solicitando el derecho de acceso TOKEN_QUERY
.
Finalmente, puede llamar al GetTokenInformation
, solicitando la clase de información TokenUser
, que le proporcionará la cuenta de usuario del token. Esta información se le proporciona en forma de SID
. Para convertir el SID
al nombre real de la cuenta, puede llamar al LookupAccountSid
.
No olvide llamar al CloseHandle
tanto en el controlador del proceso como en el del token una vez que haya terminado con ellos.