使用c#监视用户活动

本文关键字:活动 用户 监视 使用 | 更新日期: 2023-09-27 18:10:16

我正在开发一个监视用户活动的应用程序。我需要知道每个用户的登录,注销,锁定和解锁时间。如何使用c#从本地机器获取这些信息?

请注意:我不是问第一次登录和最后注销时间。我需要整个用户活动,包括窗口锁定和解锁。只有这样我才能知道实际的工作时间。如果有什么办法,请告诉我

使用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