Red de conocimiento informático - Problemas con los teléfonos móviles - vc obtiene el nombre de usuario del proceso

vc obtiene el nombre de usuario del proceso

CString GetProcessUserName(HANDLE hProcess)

{

HANDLE hToken = NULL;

BOOL bFuncReturn = FALSE;

CString strUserName = _T( "");

PTOKEN_USER pToken_User = NULL;

DWORD dwTokenUser = 0;

TCHAR szAccName[MAX_PATH] = {0};

TCHAR szDomainName[MAX_PATH] = {0};

HANDLE hProcessToken = NULL;

if(hProcess != NULL)

{

//Elevar los permisos de este proceso

bFuncReturn = ::OpenProcessToken(hProcess,TOKEN_QUERY,&hToken);

if( bFuncReturn == 0) // Fallo

return strUserName;

if(hToken != NULL)

{

::GetTokenInformation(hToken, TokenUser, NULL,0L, &dwTokenUser ) ;

if(dwTokenUser>0)

{

pToken_User = (PTOKEN_USER)::GlobalAlloc( GPTR, dwTokenUser );

}

if(pToken_User != NULL)

{

bFuncReturn = ::GetTokenInformation(hToken, TokenUser, pToken_User, dwTokenUser, &dwTokenUser);

}

if(bFuncReturn != FALSE && pToken_User ! = NULL)

{

SID_NAME_USE eUse = SidTypeUnknown;

DWORD dwAccName = 0L;

DWORD dwDomainName = 0L;

PSID pSid = pToken_ Usuario->Usuario.Sid;