title: C# Get RDC/RDP and "Console" Session information
body: <p>I'm trying to retrieve some RDC/RDP and "Console" login information programmatically via C#.</p>
  
  <p>I want to develop a simple console application (.EXE) such that I can retreive the information  from Task Manager -> Users Tab of any remote computer on our domain (Windows Server 2003 x86, or 2008R2 x64). </p>
  
  <p>This shows if a person is logged onto the server directly (i.e. the Console) or over RDC/RDP (including the client if it is still active) or disconnected if it is "suspended" (i.e. they have not logged off but just closed the RDC/RDP windows temporarily)</p>
  
  <p>I have admin permissions on all servers and can configure any windows services/firewalls rules that need to be enabled/disabled (if required)</p>
  
  <p>I think I have to probably use WMI (using System.Management) but the examples I have found from google only retrieve the existing user.</p>
  
  <pre><code>//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)
  }
  </code></pre>