在 Windows 7 上检索登录用户的名称,我可以这样做:
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);
但在 Windows 8 上,它会返回一些缩写名称,例如,当实际用户的名称是“John A. Doe”时,它会返回“john_000”。
那么,使用 WinAPI 在 Windows 8 上使用 C++ 检索登录用户的名称(可能还有他们的电子邮件)的方法是什么,如登录屏幕所示?