簡體   English   中英

在C#中獲取本地Windows用戶登錄會話時間戳

[英]Getting Local Windows User login session timestamp in C#

我一直在嘗試查看各種.NET類庫,以便我可以獲取本地計算機的登錄用戶,無論是否連接到域。 至今

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

這將返回用戶的名稱,但有任何方式獲取會話詳細信息,您將在AD或用戶登錄時看到的內容,會話持續時間等等。用戶的上下文,諸如Workstation鎖定的操作,存在用戶基本的。

如果您有任何想法,我將不勝感激。 提前致謝。

您可以使用System.DirectoryServices命名空間通過LDAP查詢查詢Active Directory以獲取所需的大部分數據。 例如,下面的示例顯示了用戶的上次登錄時間。

當然,這僅適用於域用戶。

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();
        }
    }
}

您可以從WMI中查看WMI_LogonSession等一些啟動時間

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM