Comprendre le Défi
Avez-vous déjà eu besoin de savoir combien de temps un utilisateur était connecté à Windows, en particulier si vous développez un logiciel qui nécessite cette information ? Si oui, vous n’êtes pas seul. Bien que vérifier la durée des sessions utilisateur puisse sembler simple, de nombreux développeurs rencontrent des difficultés pour trouver une fonction API directe pour y parvenir.
Dans cet article de blog, nous allons explorer des moyens de déterminer combien de temps l’utilisateur actuel est connecté à Windows Vista et fournir des exemples pratiques en utilisant des requêtes WMI et Visual Basic Script (VBS).
L’Absence d’API Directe
Le premier obstacle auquel de nombreux développeurs sont confrontés est l’absence d’une fonction API simple qui puisse fournir facilement des informations sur la durée de connexion. De plus, bien que la Windows Management Instrumentation (WMI) puisse souvent être une solution robuste, ceux qui ne sont pas familiers avec celle-ci peuvent la trouver écrasante, les amenant à passer à côté de ses capacités potentielles.
Aperçu de la Solution
Pour résoudre ce problème, nous pouvons utiliser WMI pour interroger la classe Win32_Session
, qui contient des détails sur les sessions utilisateur, y compris leurs heures de début. Dans cette section, nous allons décomposer la manière de configurer cela de manière simple à suivre.
Configuration de WMI
Ressources Utiles
Avant de plonger dans le code, il est utile de se familiariser avec quelques ressources clés concernant WMI :
- Page MSDN sur l’utilisation de WMI avec Divers Langages
- Référence pour Win32_Session
- Documentation sur Win32_LogonSession
- Outil WMI Explorer - Utilisez cet outil pour explorer et exécuter facilement des requêtes sur les classes WMI.
Exemple de Code pour Interroger Win32_Session
Pour obtenir la durée de connexion de l’utilisateur actuel, vous pouvez écrire un simple script VBS. Voici un exemple de code qui démontre cela :
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" _
& strComputer & "\root\cimv2")
Set sessions = objWMIService.ExecQuery _
("select * from Win32_Session")
For Each objSession in sessions
Wscript.Echo objSession.StartTime
Next
Filtrage des Sessions
Après avoir exécuté le code, vous pourriez remarquer qu’il retourne plusieurs sessions. Pour vous concentrer sur les utilisateurs interactifs, envisagez d’appliquer des filtres basés sur la propriété LogonType
des objets de session. De cette manière, vous pouvez isoler les sessions qui sont les plus pertinentes pour votre application.
Ressources Supplémentaires
Si vous recherchez des retours supplémentaires de la communauté ou des conseils, consultez cette discussion sur le Forum Sysinternals. Interagir avec les communautés peut souvent mener à des insights ou des solutions additionnels.
Conclusion
Déterminer combien de temps un utilisateur est connecté à Windows peut sembler difficile, mais en s’appuyant sur WMI et VBS, cette tâche devient gérable. Que vous développiez une application qui suit l’activité des utilisateurs ou que vous recherchiez simplement des détails à des fins administratives, les méthodes ci-dessus peuvent vous fournir l’insight dont vous avez besoin.
Implémentez cette solution dans votre application, et vous êtes bien parti pour mieux surveiller les sessions utilisateur sur Windows.