我正在开发一个监控用户活动的应用程序。我需要知道每个用户的登录,注销,锁定和解锁时间。如何使用C#从本地计算机获取这些信息。
请注意:我不是要求首次登录和上次退出时间。我需要整个用户活动,包括Windows锁定和解锁。那时我才能找到实际的工作时间。如果有办法,请告诉我
答案 0 :(得分:0)
您可以使用SystemEvents
课程。它为所有用户活动提供事件,如注销,锁定,注销等。
http://msdn.microsoft.com/en-us/library/microsoft.win32.systemevents(v=vs.110).aspx
答案 1 :(得分:0)
所以这可以通过检查SystemEvent_SessionSwitch来完成,此代码会告诉您有人离开办公桌并返回他们的办公桌。 (代码示例由Timoty Carter编写)
Microsoft.Win32.SystemEvents.SessionSwitch += new Microsoft.Win32.SessionSwitchEventHandler(SystemEvents_SessionSwitch);
void SystemEvents_SessionSwitch(object sender, Microsoft.Win32.SessionSwitchEventArgs e)
{
if (e.Reason == SessionSwitchReason.SessionLock)
{
//I left my desk
}
else if (e.Reason == SessionSwitchReason.SessionUnlock)
{
//I returned to my desk
}
}
要查看他们登录或退出的时间,您只需检查当前计算机UserPrincipal中的用户对象。
public DateTime UserLogon(string username)
{
// create your domain context
PrincipalContext domain = new PrincipalContext(ContextType.Domain);
// find the user
UserPrincipal foundUser = UserPrincipal.FindByIdentity(domain, IdentityType.Name, username);
//Return time for last logon
return foundUser.LastLogon;
}