C# 使用c监控用户活动#

C# 使用c监控用户活动#,c#,windows,wcf,monitoring,C#,Windows,Wcf,Monitoring,我正在开发一个监控用户活动的应用程序。我需要知道每个用户的登录、注销、锁定和解锁时间。如何使用C#从本地计算机获取这些信息 请注意:我不是问第一次登录和最后一次注销的时间。我需要整个用户活动,包括windows锁定和解锁。只有我才能知道实际的工作时间。请告诉我是否有任何方法可以做到这一点,您可以使用SystemEvents类。它为所有用户活动提供事件,如注销、锁定、注销等 所以这可以通过检查SystemEvent\u SessionSwitch来完成,当有人离开办公桌回到办公桌时,此代码将告诉您

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


请注意:我不是问第一次登录和最后一次注销的时间。我需要整个用户活动,包括windows锁定和解锁。只有我才能知道实际的工作时间。请告诉我是否有任何方法可以做到这一点,您可以使用
SystemEvents
类。它为所有用户活动提供事件,如注销、锁定、注销等


所以这可以通过检查SystemEvent\u SessionSwitch来完成,当有人离开办公桌回到办公桌时,此代码将告诉您。(代码示例由编写)

要了解他们登录或注销的时间,您只需检查当前计算机上的用户对象


这个问题似乎离题了,因为它纯粹是邪恶的!你看到下面的问题了吗?
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
        }
    }
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;
}