좋은 날, 나는 Eventlog 메소드를 둘러 보면서 주위를 둘러 보면서 얼마나 많은 entry.replacementstrings [5] 사용자 이름이 있을지 계산할 수있었습니다.사용자를 카운트하는 EventLog
public int countUsers { get; set; }
public string User { get; set; }
public Users(int count, string name)
{
countUsers = count;
User = name;
}
public void getCountUsers()
{
number = 0; //
UserList = new ObservableCollection<Users>();
EventLog myNewLog = new EventLog();
myNewLog.Log = "Security";
foreach (EventLogEntry entry in myNewLog.Entries)
{
if (entry.InstanceId == 4624 && entry.TimeWritten.Date == DateTime.Today)
{
if (UserList.Count > 0)
{
bool check = false;
foreach (var user in UserList)
{
if (user.User == entry.ReplacementStrings[5])
{
user.countUsers += 1;
check = true;
}
}
if (!check)
{
Users u = new Users(1, entry.ReplacementStrings[5]);
UserList.Add(u);
}
}
else
{
Users u = new Users(1, entry.ReplacementStrings[5]);
UserList = new ObservableCollection<Users>();
UserList.Add(u);
}
}
}
}
public void counter()
{
var totalUsers = UserList.Sum(user => user.countUsers);
foreach (var user in UserList)
{
Console.WriteLine("There has been {0} users on {1}", user.countUsers, DateTime.Today.ToShortDateString());
}
}
내가 현재 가지고있는 것. 지금 내가 할 수 있기를 원하는 것은 사용자에게 SYSTEM을 계산하지 않도록 기록 라인에 정규식을 추가하는 것입니다.
나는 그것을 할 수 있었지만 모든 개별 사용자를 인쇄 할 것이 었습니다. 대신에 그 날짜에 얼마나 많은 사람들이 온라인에 있었는지에 대한 일반적인/글로벌 아이디어를 원합니다.
그래서 각 루프를 제거하고 user.countUsers를 얻는 방법을 알아야합니다.
foreach (var user in UserList)
{
Regex User = new Regex(@"SYSTEM");
Match match = User.Match(user.User);
if (!match.Success)
{}
}
이제 정규식이 작동하도록 변수를 호출하는 방법을 알지 못합니다. 누구든지 어쩌면 아마도 정규식없이 그것을 고칠 방법을 알고 계십니까?
(사이드 노트 : 나는 또한 합법적 인 사람 1해야 할 때 이벤트 로그가 2 배라는 사실 도움이 필요 내가 그를 필터링 할 방법을 볼 필요가있다.)
나는 사과를 더 분명히해야했습니다. 각각에 대해 사용하고 싶지 않습니다. 한 번 사용자가 로그온 한 횟수를 더 이상 알 필요가 없습니다. 일반적으로 알고 있어야합니다. 이렇게하면 다른 사용자가 로그온 한 횟수가 인쇄됩니다. – 308075
그러면'Dictionary'@ 308075를 사용할 수 있습니다. –