Posso ottenere il nome dell'account utente, che ha eseguito il processo con l'ID specificato. C'è qualche funzione API per questo?Rilevamento del nome utente dall'ID processo
Sto usando windows, C++.
Posso ottenere il nome dell'account utente, che ha eseguito il processo con l'ID specificato. C'è qualche funzione API per questo?Rilevamento del nome utente dall'ID processo
Sto usando windows, C++.
Non esiste una funzione API che lo faccia direttamente, tuttavia è possibile combinare alcune chiamate API per farlo. Naturalmente il tuo programma dovrà soddisfare tutti gli ACL che sono applicati al processo che ti interessa esaminare.
Innanzitutto, dato l'ID di processo, è necessario aprire un handle per il processo. È possibile utilizzare OpenProcess
per quello, richiedendo l'accesso a PROCESS_QUERY_INFORMATION
.
Una volta ottenuto tale handle, è possibile chiamare OpenProcessToken
, richiedendo l'accesso allo TOKEN_QUERY
.
Infine, è possibile chiamare GetTokenInformation
, richiedendo la classe di informazioni TokenUser
, che fornirà l'account utente del token. Questa informazione ti viene fornita sotto forma di SID
. Per convertire SID
nel nome effettivo dell'account, è possibile chiamare LookupAccountSid
.
Non dimenticare di chiamare CloseHandle
sia sull'handle del processo che sul token handle una volta che hai finito con loro.