I am trying to see if a windows user account is logged in or not. Here is my current code:
Dictionary<string, ManagementObject> userMap = new Dictionary<string, ManagementObject> (); private void popUserList() { ManagementObjectSearcher usersSearcher = new ManagementObjectSearcher(@"SELECT * FROM Win32_UserAccount"); ManagementObjectCollection users = usersSearcher.Get(); var localUsers = users.Cast<ManagementObject>().Where( u => (bool)u["LocalAccount"] == true && int.Parse(u["SIDType"].ToString()) == 1 && u["Name"].ToString() != "HomeGroupUser$" ); userMap.Clear(); userAccountLst.Items.Clear(); foreach (ManagementObject user in localUsers) { userMap[user["Name"].ToString()] = user; userAccountLst.Items.Add(user["Name"].ToString()); } } private ManagementObject getCurrentUser() { return userMap[userAccountLst.SelectedItem.ToString()]; } private bool IsUserLoggedIn(ManagementObject user) { ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_UserProfile WHERE Loaded = True"); foreach (ManagementObject obj in searcher.Get()) { MessageBox.Show(obj["Antecedent"].ToString()); if (obj["Antecedent"].ToString().Contains(getCurrentUser()["Name"].ToString())) { return true; } } return false; }
I have a WinForms application that has a Listbox with all the user accounts list in it, for context. However, unbeknownst to me, Win32_UserProfile doesn't work anymore. It's not anywhere in Microsoft's documentation. Assumingly deprecated. I've been looking around Google for hours trying to get a method that is not:
a. Getting if a user account is logged in on ASP.NET. b. Getting if a user account is logged in via Remote Connection. c. Getting what the CURRENT user account is.
I just want to input a user as a ManagementObject, and get if it is logged into Windows LOCALLY.