在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 ++检索已登录用户(可能还有他们的电子邮件)的名称的方法是什么,如登录屏幕所示?
答案 0 :(得分:3)
您可以使用NetUserGetInfo USER_INFO_23来获取全名。
基本上像:
//Got user name in 'pUserName'
NetUserGetInfo(NULL, pUserName, 23, my_USER_INFO_23);
//Got display name in my_USER_INFO_23.usri23_full_name