首页 文章

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

提问于
浏览
2

我正在开发一个在后台运行的应用程序,用于捕获用户在其系统上的活动,例如logoff / shutdown / idle / switch用户/继续按下任何键/系统锁等 .

它工作正常,我能够跟踪所有活动,现在我需要在系统锁定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;
    }    
}

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

1 回答

  • 0

    终于找到了问题的替代方案,

    代码

    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");
    

相关问题