如何在用户的会话锁定时注销用户

本文关键字:用户 锁定 定时 注销 会话 | 更新日期: 2023-09-27 17:55:46

>我正在开发一个在后台运行的应用程序,用于捕获用户在其系统上的活动,例如注销/关机/空闲/切换用户/继续按任何键/系统锁定等。

它工作正常,我能够跟踪所有活动,现在我需要在系统锁定 15 分钟后自动注销用户。

我已经尝试了下面的代码。ExitWindowsEx()功能在用户登录时工作正常,但在用户锁定系统后不起作用。

使用的代码

[DllImport("user32")]
public static extern bool ExitWindowsEx(uint uFlags, uint dwReason);
private SessionSwitchEventHandler sseh;
void SysEventsCheck(object sender, SessionSwitchEventArgs e)
{
    switch (e.Reason)
    {
        case SessionSwitchReason.SessionLock:
           if(condition)
           {
               ExitWindowsEx(0, 0);
           }
           break;
    }    
}

任何人都可以帮助我如何在用户处于锁定状态时注销用户。

如何在用户的会话锁定时注销用户

终于有了这个问题的替代方案,

法典

public static bool _IsLocked;
private SessionSwitchEventHandler sseh;
void SysEventsCheck(object sender, SessionSwitchEventArgs e)
{
    switch (e.Reason)
    {
        case SessionSwitchReason.SessionLock:
            if (!_IsLocked)
            {
                Process.Start("shutdown", "/r /f /t 900");
            }
            _IsLocked = true;
            break;
        case SessionSwitchReason.SessionUnlock:
            if (_IsLocked)
            {
                Process.Start("shutdown", "-a");
            }
            _IsLocked = false;
            break;
    }
}

上面的代码将在系统锁定时安排系统重启(15分钟),如果用户在15分钟之前解锁系统,代码将取消该时间表,否则这将在15分钟后重新启动系统。

重新启动调度程序代码

Process.Start("shutdown", "/r /f /t 900");

取消重启

Process.Start("shutdown", "-a");