我正在开发一个应用程序,它监视用户的活动。 我需要知道每个用户的login,注销,locking和解锁时间。 如何使用C#从本地机器获取这些信息。
请注意:我不是问第一次login和最后登出时间。 我需要整个用户活动,包括窗口locking和解锁。 那么只有我可以找出实际的工作时间。 请让我知道是否有任何方法来做到这一点
所以这可以通过检查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; }
您可以使用SystemEvents
类。 它提供所有用户活动的事件,如注销,锁定,注销等
http://msdn.microsoft.com/en-us/library/microsoft.win32.systemevents(v=vs.110).aspx