WIn32API プロセスIDからセッションIDを求める

プロセスIDからセッションIDを求めるには、ProcessIdToSessionId関数を用いる。


  • ProcessIdToSessionId関数のプロトタイプ
  • BOOL ProcessIdToSessionId(
      DWORD dwProcessId, //プロセスID [IN]
      DWORD *pSessionId //求めるセッションID [OUT]
    );



  • ProcessIdToSessionId関数の使用例として, プロセスIDが3000であるプロセスのセッションIDを求める

  • (dwProcessIdの初期値は、セッションIDを求める対象のプロセスのプロセスIDをに適宜変更する)

    #include <windows.h>
    #include <stdio.h>
    #include <wtsapi32.h>
    
    #pragma comment(lib, "wtsapi32.lib")
    
    int main()
    {
        DWORD dwProcessId = 3000;//この値は、適宜変更すること
        DWORD dwSessionId;
    
        if (ProcessIdToSessionId(dwProcessId, &dwSessionId)) {
            printf("dwProcessId=%d, SessionId=%d\n", dwProcessId, dwSessionId);
        } else {
            puts("ProcessIdToSessionId failed");
        }
    
        return 0;
    }




  • 注意事項として、Windows Vsita以降のOSでは、セッション0のプロセスの場合は、管理者権限が必要になる。


  • 参考

  • http://msdn.microsoft.com/ja-jp/library/cc429573.aspx