使用 C++ 和 WinAPI 在 Windows 8 上获取登录用户名或电子邮件
Posted
技术标签:
【中文标题】使用 C++ 和 WinAPI 在 Windows 8 上获取登录用户名或电子邮件【英文标题】:Get logged on user's name or email on Windows 8 using C++ and WinAPIs 【发布时间】:2012-08-09 06:54:55 【问题描述】:在 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++ 检索登录用户的名称(可能还有他们的电子邮件)的方法是什么,如登录屏幕上显示的那样?
【问题讨论】:
How to get logged-in user's full name in windows? 的可能重复项 【参考方案1】:您可以尝试使用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
【讨论】:
很好,这是获取完整用户名的方法。但是电子邮件呢? 对不起,不知道。您是在谈论检索链接到用户帐户(如果有)的 Windows Live ID 吗? 我认为用户 ID 与 Windows 8 上的 Live ID 相关联。如果您使用的是 Windows 8,它会在登录屏幕上的用户图标旁边显示为电子邮件。但这没关系,只要我有一个完整的用户名就可以了。谢谢! Signing in to Windows 8 with a Windows Live ID以上是关于使用 C++ 和 WinAPI 在 Windows 8 上获取登录用户名或电子邮件的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 WinAPI 和 C++ 从 Windows 系统上的服务通知客户端应用程序?
如何使用 C++ 和 winAPI 检查目录是不是存在 [重复]