WIn32API ターミナルサービスセッションをログオフする

ターミナルサービスセッションをログオフするには、WTSLogoffSession関数を用いる


WTSLogoffSession関数のプロトタイプは、以下の通り

BOOL WTSLogoffSession(
  HANDLE hServer, //ターミナルサーバーのハンドル
  DWORD SessionId, //セッションID
  BOOL bWait //操作を同期して行うか
);

hServerには、WTSOpenServer関数でオープンしたハンドルを指定する。または、プログラム実行中のターミナルサーバーを指定する場合は、WTS_CURRENT_SERVER_HANDLEを用いる。

SessionIdは、ログオフするセッションのセッションIDを指定する。現在のセッションをログオフする場合は、WTS_CURRENT_SESSIONを指定する。



  • 以下のコードは、プログラム実行中のターミナルサーバー上の現在のセッションをログオフする。(このコードを実行すると、現在使用中のセッションがログオフされてしまうので要注意。データのバックアップ等が必要です。)
  • #include <windows.h>
    #include <stdio.h>
    #include <wtsapi32.h>
    
    #pragma comment(lib, "wtsapi32.lib")
    
    int main()
    {
        HANDLE hServer = WTS_CURRENT_SERVER_HANDLE;
        
        //このプログラムを実行しているターミナルサーバー上の現在セッションをログオフする
        if (WTSLogoffSession(hServer, WTS_CURRENT_SESSION, TRUE)) {
            puts("Success");
        } else {
            puts("Failed");
        }
    
        return 0;
    }





    参考
    http://msdn.microsoft.com/ja-jp/library/cc429620.aspx