1

How to get a list users in Task Manager with status?

I found only how to get a list of domain users

var usersSearcher = new ManagementObjectSearcher(@"SELECT * FROM Win32_UserAccount");
var users = usersSearcher.Get();
Hossein Narimani Rad
  • 31,361
  • 18
  • 86
  • 116
polsok
  • 107
  • 5
  • [Are the answers on here of any help?](http://stackoverflow.com/questions/132620/how-do-you-retrieve-a-list-of-logged-in-connected-users-in-net) – s.m. May 15 '17 at 13:59

1 Answers1

0

You can try this code to get the list of users:

var usersSearcher = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_UserAccount");
var managementObjects = usersSearcher.Get();

List<string> result = new List<string>();

foreach (ManagementObject item in managementObjects)
{
    foreach (var pr in item.Properties)
    {
        if (pr.Name == "Caption")
        {
            result.Add(pr.Value?.ToString());
        }
    }
}

var users = result.Distinct().ToList();

Also you may try this:

var usersSearcher = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_Process");
var managementObjects = usersSearcher.Get();
List<string> allUsers = new List<string>();

foreach (ManagementObject obj in managementObjects)
{
    string[] argList = new string[] { string.Empty, string.Empty };
    int returnVal = Convert.ToInt32(obj.InvokeMethod("GetOwner", argList));
    if (returnVal == 0)
    {
        // return DOMAIN\user
        allUsers.Add(argList[1] + "\\" + argList[0]);
    }
}

var result = allUsers.Distinct().ToList();
Hossein Narimani Rad
  • 31,361
  • 18
  • 86
  • 116