C # Получение информации о сеансе RDC / RDP и «консоли»

Я пытаюсь получить некоторую информацию для входа в RDC / RDP и "Консоль" программно через C #.

Я хочу разработать простое консольное приложение (.EXE) так, чтобы я мог получать информацию из диспетчера задач -> вкладка Users любого удаленного компьютера в нашем домене (Windows Server 2003 x86 или 2008R2 x64).

Это показывает, зарегистрирован ли пользователь на сервере напрямую (т.е. на консоли) или через RDC / RDP (включая клиента, если он все еще активен) или отключен, если он «приостановлен» (т. Е. Они не вышли из системы, но ju, st временно закрыл окна RDC / RDP)

У меня есть права администратора на всех серверах, и я могу настроить любые правила для служб Windows / брандмауэров, которые необходимо включить / отключить (если требуется)

Я думаю, что я, вероятно, должен использовать WMI (используя System.Management), но примеры, которые я нашел в Google, только извлекают существующего пользователя.

//Method 1
var searcher = new ManagementObjectSearcher(
               "SELECT UserName FROM Win32_ComputerSystem");
var collection = Searcher.Get();
foreach(ManagementObject entry in collection)
{
  Console.WriteLine(entry["UserName"]);
}

//Method 2
string computer = "somecomputername";   
var searcher = new ManagementObjectSearcher(
               computer + @"root\CIMV2", "SELECT * FROM Win32_TerminalService");
var collection = Searcher.Get();
foreach(ManagementObject entry in collection)
{
  //Write them out (although usernames isnt listed from the example I found)
}

Ответы на вопрос(1)

Ваш ответ на вопрос