2012-08-13 26 views
0

在Windows 7上檢索的登錄的用戶是我能做到這個名字用戶的姓名或電子郵件獲取登錄的Windows 8:使用C++和WinAPIs

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」。

那麼在Windows 8上使用WinAPI在C++上檢索登錄用戶的名稱(可能是他們的電子郵件),如何在登錄屏幕上顯示?

+0

可能重複[?如何獲得登錄用戶的全名在Windows(http://stackoverflow.com/questions/3438634/how-to-get-登錄用戶在窗口中的全名) – Deanna 2012-08-14 10:48:20

回答

3

您可以試試NetUserGetInfoUSER_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 
+0

非常好,這是得到完整的用戶名的方式。但是電子郵件呢? – ahmd0 2012-08-13 04:40:18

+0

對不起,不知道。你是否在談論檢索鏈接到用戶帳戶(如果有的話)的Windows Live ID? – azhrei 2012-08-13 05:04:31

+0

我認爲用戶標識鏈接到Windows 8上的Live ID。如果您有Windows 8,它將顯示爲登錄屏幕上用戶圖標旁邊的電子郵件。但沒關係,只要我有一個完整的用戶名,我會沒事的。謝謝! – ahmd0 2012-08-13 06:00:00