2016-07-08 6 views
2

Я разрабатываю приложение для запуска в фоновом режиме для захвата активности пользователя в своей системе, например, выключение/выключение/простоя/включение пользователя/продолжение нажатия любой клавиши/системы замок и т. д.Как отключить пользователя, когда сеанс пользователя заблокирован

Он работает нормально, и я могу отслеживать все действия, теперь мне нужно автоматически выходить из системы после 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; 
    }  
} 

Может ли один помочь мне, как выйти пользователю, когда он/она находится в заблокированном состоянии.

+0

Не может ли это быть сделано в групповой политике или настройки учетной записи AD? Не нужно ничего программировать (при условии, что это домен) – MickyD

+0

Как об использовании этого http://www.windows-commandline.com/windows-logoff-command-line/ –

+0

Tried 'Process.Start (« shutdown »,/r/t 0 ");' и 'Process.Start (" shutdown "," -L/t 0 ");' но не работает в заблокированном состоянии. –

ответ

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 минут.

Restart Scheduler код

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

Отменить Restart

Process.Start("shutdown", "-a"); 
Смежные вопросы