「用戶A」登錄 我的應用程序在Windows識別Environment.Username「用戶A」找出當前用戶的用戶名 - 當多個用戶登錄
現在,我點擊切換用戶.. 。在
「用戶B」日誌「用戶A」進程仍在運行 申請由「用戶A」還稱Environment.Username運行是「用戶A」 我想申請認識到當前登錄用戶(當前活動用戶)是「用戶B」
我該怎麼做?
「用戶A」登錄 我的應用程序在Windows識別Environment.Username「用戶A」找出當前用戶的用戶名 - 當多個用戶登錄
現在,我點擊切換用戶.. 。在
「用戶B」日誌「用戶A」進程仍在運行 申請由「用戶A」還稱Environment.Username運行是「用戶A」 我想申請認識到當前登錄用戶(當前活動用戶)是「用戶B」
我該怎麼做?
ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\CIMV2", "SELECT UserName FROM Win32_ComputerSystem");
foreach (ManagementObject queryObj in searcher.Get())
{
loggedOnUserName = queryObj["UserName"].ToString();
loggedOnUserName = loggedOnUserName.Substring(loggedOnUserName.LastIndexOf('\\') + 1);
}
當「用戶B」登錄,在「用戶A」中運行的應用中loggedOnUserName報告「用戶B」。
這就是我一直在尋找的。 無論如何感謝。
您絕對不會在該級別找到信息 - 您想要轉到較低級別的API,以使登錄的用戶(其中可以有多個)可用。
有作爲當前活動的用戶,因爲不可能有這樣的事不止一個(終端服務器)
您可以使用GetSystemMetrics的(SM_REMOTESESSION),以檢查是否這是一個「本地「會話和WTSGetActiveConsoleSessionId以獲取控制檯會話的會話標識(當前登錄的用戶在您調用它時)您可以使用WTSRegisterSessionNotification在此更改時收到通知。 ProcessIdToSessionId(GetCurrentProcess(),...)會讓你獲得你的進程所在的會話ID。最後,WTSQuerySessionInformation()會爲你提供關於特定會話的信息。
+1:的確如此。即使在單個會話或進程中(例如,服務器進程在進行用戶模擬),也可能有多個用戶標識。 – Richard 2009-08-07 13:33:28
呃,社區維基以某種方式得到檢查,哦 – Anders 2009-08-07 13:35:37