簡體   English   中英

域控制器中的Active Directory用戶登錄/注銷歷史記錄

[英]Active Directory user logon/logoff history in domain controller

如何獲得Active Directory用戶的登錄/注銷歷史以及工作站的鎖定/解鎖。

哪里保存此類信息?

假設您已在每台計算機上啟用了登錄/注銷事件,並且已將它們發送到域控制器(通過組策略...) ,則可以閱讀事件日志以獲取所需的信息。

using System.Diagnostics;

namespace ReadEventLogs
{
  class Program
  {
     public static void Main(string[] args)
     {
        System.Diagnostics.EventLog eventLog1 = new System.Diagnostics.EventLog("Security", ".");

        foreach(EventLogEntry entry in eventLog1.Entries)
        {
          //Event ID 4624 LOGON
          //EVent ID 4634 LOGOFF
          if (entry.InstanceId == 4634)
          {
            Console.WriteLine(entry.Message);
          }
        }
      }
   }
}

entry. 將包含您要查找的信息。

如果未指定計算機名或服務器,則將從本地計算機"."讀取事件日志"."

話雖如此,還有一種替代解決方案可以獲取您正在尋找的信息。

您可以編寫一個簡單的程序,將用戶名(或您需要的任何其他信息)直接插入數據庫。

一旦用戶登錄到任何計算機,您就可以獲取用戶名並調用存儲過程以將數據插入數據庫中。

...     
public static void LogUserDetail()
{
   //Get current logged on username
   string userName = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
   using (SqlConnection conn = DBUtility.Connection)
   {
      using (SqlCommand cmd = conn.CreateCommand())
      {
         cmd.CommandText = "LogUserDetail";
         cmd.CommandType = CommandType.StoredProcedure;
         cmd.Parameters.Add(new SqlParameter("UserName", userName));
         cmd.Parameters.Add(new SqlParameter("DateTime", DateTime.Now));
         conn.Open();
         cmd.ExecuteNonQuery();
      }
    }
 }

您將需要在數據庫中創建一個過程LogUserDetail ,並使用您的連接創建一個DBUtility類。

然后,您可以將此應用程序作為Group Policy運行,每當有人登錄到網絡上的任何計算機時,您都會在數據庫中獲取數據。

暫無
暫無

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

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