2009-03-25 4 views
3

J'ai essayé de parcourir les différentes bibliothèques de classes .NET pour trouver l'utilisateur connecté de la machine locale, connecté ou non à un domaine. Jusqu'à présentObtenir l'horodatage de la session de connexion de l'utilisateur Windows local en C#

System.Security.Principal.WindowsPrincipal LoggedUser = System.Threading.Thread.CurrentPrincipal as 
System.Security.Principal.WindowsPrincipal; 
// This returns the username 
LoggedUser.Identity.Name 

Ceci renvoie le nom de l'utilisateur, est cependant il possible d'obtenir les détails de la session, quelque chose que vous verriez dans AD ou de l'utilisateur connecté, la durée de la session, etc .. le contexte de la utilisateur, actions telles que Workstation verrouillé, la présence de l'utilisateur basiclly.

Si vous avez une idée, ce serait très apprécié. Merci d'avance.

Répondre

2

Vous pouvez interroger Active Directory pour une grande partie des données que vous avez besoin à travers des requêtes LDAP en utilisant l'espace de noms System.DirectoryServices. Par exemple, l'exemple ci-dessous montre la dernière heure de connexion de l'utilisateur.

Bien sûr, cela ne fonctionne que pour les utilisateurs du domaine.

using System; 
using System.Collections.Generic; 
using System.Text; 
using System.DirectoryServices; 

namespace ADMadness 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      DirectorySearcher search = new DirectorySearcher("LDAP://DC=my,DC=domain,DC=com"); 
      search.Filter = "(SAMAccountName=MyAccount)"; 
      search.PropertiesToLoad.Add("lastLogonTimeStamp"); 


      SearchResult searchResult = search.FindOne(); 


      long lastLogonTimeStamp = long.Parse(searchResult.Properties["lastLogonTimeStamp"][0].ToString()); 
      DateTime lastLogon = DateTime.FromFileTime(lastLogonTimeStamp); 


      Console.WriteLine("The user last logged on at {0}.", lastLogon); 
      Console.ReadLine(); 
     } 
    } 
} 
Questions connexes