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を使用してC++を使用するWindows8でログオンしているユーザーの名前(および場合によってはその電子メール)を取得する方法は何ですか?