C # Obter informações de sessão RDC / RDP e "Console"

Eu estou tentando recuperar algumas informações de logon RDC / RDP e "Console" programaticamente via c #.

Eu quero desenvolver um simples aplicativo de console (.exe) de tal forma que eu possa recuperar as informações do Gerenciador de tarefas -> guia Usuários de qualquer computador remoto em nosso domínio (Windows Server 2003 x86 ou 2008R2 x64).

Isso mostra se uma pessoa está conectada ao servidor diretamente (ou seja, o Console) ou por RDC / RDP (incluindo o cliente se ainda estiver ativo) ou desconectada se estiver "suspensa" (ou seja, eles não efetuaram logout, mas apenas fecharam o Janelas RDC / RDP temporariamente)

Tenho permissões de administrador em todos os servidores e posso configurar quaisquer regras de serviços / firewalls do Windows que precisem ser habilitadas / desabilitadas (se necessário)

Eu acho que tenho que provavelmente usar o WMI (usando System.Management), mas os exemplos que eu encontrei do google só recuperam o usuário existente.

//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)
}

questionAnswers(1)

yourAnswerToTheQuestion