comment obtenir des utilisateurs connectés avec leur statut sur la machine distante

Je suis à la recherche d'un moyen d'obtenir les utilisateurs qui sont connectés sur une machine distante. J'aimerais savoir si ils sont connectés en local ou à distance, mais la plupart de tous, je dois connaître leur statut.
J'ai vu quelques réponses sur le net qui sont écrits en VB, mais j'en ai besoin en c#.
la solution donnée dans markdmak réponse ici est à la recherche comme un bon début, mais c'est en VB et il semble pour les sessions à distance.
J'ai ce morceau de code, qui peut être un début, mais je voudrais quelques la LogonId à un nom d'utilisateur et de voir son état:

string fqdn = ""; //set!!!    
ConnectionOptions options = new ConnectionOptions();
options.EnablePrivileges = true;
//To connect to the remote computer using a different account, specify these values:
//these are needed in dev environment
options.Username = ConfigurationManager.AppSettings["KerberosImpersonationUser"];
options.Password = ConfigurationManager.AppSettings["KerberosImpersonationPassword"];
options.Authority = "ntlmdomain:" + ConfigurationManager.AppSettings["KerberosImpersonationDomain"];

ManagementScope scope = new ManagementScope("\\\\" + fqdn + "\\root\\CIMV2", options);
try
{
    scope.Connect();
}
catch (Exception ex)
{
    if (ex.Message.StartsWith("The RPC server is unavailable"))
    {
        //The Remote Procedure Call server is unavailable
        //cannot check for logged on users
        return false;
    }
    else
    {
        throw ex;
    }
}

SelectQuery query = new SelectQuery("Select * from Win32_LogonSession");
ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query);
ManagementObjectCollection results = searcher.Get();
bool returnVal = false;
foreach (ManagementObject os in results)
{
    try
    {
        if (os.GetPropertyValue("LogonId").ToString() != null && os.GetPropertyValue("LogonId").ToString() != "")
        {
            returnVal = true;
        }
    }
    catch (NullReferenceException)
    {
        continue;
    }
}
return returnVal;
}

Ce que j'en ai vraiment besoin et ne peut pas trouver de, est un moyen d'obtenir TOUS les utilisateurs sur une machine distante ET leur statut, leur sens: Actif, Déconnecté, Connecté, etc.

tu veux dire this?
Pour info, vous ne voulez probablement pas throw ex;. Utilisez simplement throw;

OriginalL'auteur user1130336 | 2013-01-08