2016-07-08 16 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

を試してみてください。Process.Start( "shutdown"、 "/r/t 0 ");' Process.Start( "shutdown"、 "-L/t 0");はロック状態では動作しません。 –

答えて

0

最後に15分のコードの前に問題の代替、

コードシステムのロック時にシステム再起動(15分)をスケジュールするコード上

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分後にシステムが再起動します。

再起動スケジューラコード

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

は再起動

Process.Start("shutdown", "-a"); 
関連する問題