Inicie sesión con el nombre de usuario o correo electrónico en Windows 8 utilizando C ++ y WinAPIs

En Windows 7 para recuperar el nombre de un usuario conectado, puedo hacer esto:

LPTSTR pUserName = NULL;
DWORD dwcbSzUserName = 0;

//'dwSessID' = user session ID
if(WTSQuerySessionInformation(WTS_CURRENT_SERVER_HANDLE, dwSessID, WTSUserName, &pUserName, &dwcbSzUserName))
{
    //Got user name in 'pUserName'
}

if(pUserName)
    WTSFreeMemory(pUserName);

Pero en Windows 8 devuelve algún nombre abreviado, por ejemplo, "john_000" cuando el nombre real del usuario es "John A. Doe".

Entonces, ¿cuál es la forma de recuperar el nombre del usuario que inició sesión (y posiblemente su correo electrónico) en Windows 8 con C ++ utilizando WinAPI como se muestra en la pantalla de inicio de sesión?

Respuestas a la pregunta(1)

Su respuesta a la pregunta