2010-07-03 18 views

risposta

12

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.

Problemi correlati