我正在开发一个监视用户活动的应用程序。我需要知道每个用户的登录,注销,锁定和解锁时间。如何使用c#从本地机器获取这些信息?
请注意:我不是问第一次登录和最后注销时间。我需要整个用户活动,包括窗口锁定和解锁。只有这样我才能知道实际的工作时间。如果有什么办法,请告诉我
所以这可以通过检查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