如何在用户会话被锁定时注销用户
How to logoff user while the user's session is locked
我正在为 运行 在后台开发一个应用程序,用于在他们的系统上捕获用户的 activity,例如 logoff/shutdown/idle/switch user/continues 按下任何 [=24] =]锁等
它工作正常,我能够跟踪所有活动,现在我需要在系统锁定 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;
}
}
任何人都可以帮助我如何在 he/she 处于锁定状态时注销用户。
问题终于有了替代方案,
代码
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");
我正在为 运行 在后台开发一个应用程序,用于在他们的系统上捕获用户的 activity,例如 logoff/shutdown/idle/switch user/continues 按下任何 [=24] =]锁等
它工作正常,我能够跟踪所有活动,现在我需要在系统锁定 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;
}
}
任何人都可以帮助我如何在 he/she 处于锁定状态时注销用户。
问题终于有了替代方案,
代码
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");