1

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

4

1 回答 1

4

您可以使用USER_INFO_23尝试使用NetUserGetInfo来获取全名。

基本上像:

    //Got user name in 'pUserName'
    NetUserGetInfo(NULL, pUserName, 23, my_USER_INFO_23);
    //Got display name in my_USER_INFO_23.usri23_full_name
于 2012-08-13T03:40:20.890 回答