Получение временной метки сеанса входа в систему локального пользователя Windows в С#

Я пытался просмотреть различные библиотеки классов .NET, где я могу получить зарегистрированного пользователя локальной машины, подключенного к домену или нет. Слишком далеко

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

Это вернет имя пользователя, однако есть ли способ получить сведения о сеансе, что-то, что вы увидите в AD или пользователь, вошедший в систему, продолжительность сеанса и т. д. контекст пользователя, такие действия, как заблокированная рабочая станция, присутствие пользователя в основном.

Если у вас есть какие-либо идеи, это было бы очень признательно. Заранее спасибо.


person Darragh    schedule 25.03.2009    source источник


Ответы (2)


Вы можете запросить в Active Directory большую часть необходимых вам данных с помощью запросов LDAP, используя System.DirectoryServices пространство имен. Например, в примере ниже показано время последнего входа пользователя в систему.

Конечно, это работает только для пользователей домена.

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();
        }
    }
}
person Aaron Daniels    schedule 25.03.2009

Вы можете получить некоторые из них, такие как время начала, из WMI. >WMI_LogonSession

person JoshBerke    schedule 25.03.2009