J'essaie de trouver un moyen d'obtenir une liste de sessions Windows? J'ai besoin des mêmes informations que celle affichée dans le gestionnaire de tâches sur l'onglet utilisateur. J'ai besoin de savoir si l'utilisateur est actif ou non et si elle est connectée dans la session de bureau à distance. P>
aucune idée sur la façon de faire cela avec C # / Windows XP Pro? P>
5 Réponses :
Je crois que vous devrez utiliser p / invoquer pour récupérer ces informations. P>
Les API pertinentes sont documentées dans Cette page MSDN . p>
En tant que point de départ, vous pouvez obtenir une liste des utilisateurs connectés en exécutant la commande à partir de l'invite de commande. p> Ceci donnera une sortie comme p> et listera toutes les sessions distantes. p> p>
Utilisez lsaenumeratelogonSessions via p / invoke. Vous aurez également besoin lsafreereturnBuffer au nettoyage après l'énumération . P>
Un autre moyen est d'utiliser l'utilitaire des logonsessions de Sysinternals: P>
http://technet.microsoft.com/en-us/sysinternals/ bb896769.aspx p>
Vous n'avez pas besoin d'utiliser Pinvoke. WMI le fait, et bien: "Sélectionnez Nom, SessionId à partir de Win32_Process" dans l'espace de noms root \ CIMV2. Et, il peut être appelé à partir d'une machine distante. Plus simple. Ajouter dans une clause WHERE dans le SELECT POUR ACCORDER FINE CE QUE VOUS RECOUVREZ. P>
Cela ne renvoie pas les mêmes informations que sur le gestionnaire de tâches sur l'onglet utilisateur. Il renvoie un identifiant entier de l'ID de session, non du nom d'utilisateur ou de SID du compte sous lequel le processus a été créé.