J'utilise WMI intérieur C# pour obtenir une liste des utilisateurs « connectés » à une machine:rapports WMI utilisateur connecté après la fermeture de session si une action a été consulté au cours de la session
ManagementScope ms = new ManagementScope(ManagementPath.DefaultPath);
var q = new SelectQuery("Win32_LoggedOnUser");
using (var query = new ManagementObjectSearcher(ms, q)) {
using (var results = query.Get()) {
foreach (var r in results) {
using (var o = new ManagementObject(r["Dependent"].ToString())) {
var logonType = o["LogonType"];
if (logonType == "2") {
// Interactive user is logged in, retrieve the name
using (var userObj = new ManagementObject(r["Antecedent"].ToString())) {
name = userObj["Name"].ToString();
}
}
...
Cela fonctionne très bien , mais il semble que dans certains cas, même après la déconnexion de l'utilisateur, WMI signale toujours qu'il est connecté. Un cas particulier est lorsque cet utilisateur accède à un partage réseau au cours de la session.
Y a-t-il un endroit autour de ça? Peut-être un moyen de tester une session pour voir si elle a été créée en partage ou si elle est active?
Tous les conseils seraient grandement appréciés.