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

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 に答える