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.
OriginalL'auteur user1130336 | 2013-01-08
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser le
Win32_LogonSession
classe WMI de filtrage pour l'type d'accès
propriété avec la valeur 2 (Interactif)Essayez cet exemple
OriginalL'auteur RRUZ
@RRUZ qui m'a mais le
Associators
requête ne fonctionne pas sur la machine distante avec beaucoup deWin32_LoggedOnUser
objets (je ne sais pas pourquoi). Aucun résultat n'a été renvoyé.J'ai aussi besoin de sessions de Bureau à distance, alors j'ai utilisé le type d'accès "10" des sessions et mon
ConnectionOptions
étaient différentsJ'ai remplacé le Associators requête avec
WmiObject.GetRelationships("Win32_LoggedOnUser")
et la vitesse augmente par beaucoup, et les résultats étaient là.OriginalL'auteur Guish