使用C ++和WinAPI在Windows 8上登录用户名或电子邮件

时间:2012-08-13 02:44:35

标签: c++ winapi windows-8 username sessionid

在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 ++检索已登录用户(可能还有他们的电子邮件)的名称的方法是什么,如登录屏幕所示?

1 个答案:

答案 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