當前登錄到控制檯會話的用戶列表可以通過WMI進行檢索。您需要添加對System.Management.dll
的引用:
public static List<string> GetLoggedOnUsers(CacheLevel level)
{
const int ConsoleSession = 2;
string logonQuery = "SELECT * FROM Win32_LogonSession WHERE LogonType = " + ConsoleSession;
ManagementObjectSearcher searcher = new ManagementObjectSearcher(logonQuery);
List<string> userNames = new List<string>();
foreach (ManagementBaseObject logon in searcher.Get())
{
string logonId = logon.Properties["LogonId"].Value.ToString();
string userQuery = "ASSOCIATORS OF {Win32_LogonSession.LogonId=" + logonId + "} "
+ "WHERE AssocClass=Win32_LoggedOnUser Role=Dependent";
ManagementObjectSearcher searcher2 = new ManagementObjectSearcher(userQuery);
foreach (ManagementBaseObject user in searcher2.Get())
{
string name = user.Properties["FullName"].Value.ToString();
userNames.Add(name);
}
}
return userNames.Distinct().ToList();
}
什麼讓您認爲只有一個登錄用戶?通過快速用戶切換,又名終端服務/遠程桌面,可以有多個登錄會話。 –
可能有多個同時登錄的用戶。例如,通過遠程桌面。 –
也許,那麼知道所有登錄用戶的列表以及誰擁有「控制檯」會話會更有用。 – jadarnel27