[英]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.