|
发表于 2018-8-30 11:01:06
|
显示全部楼层
首先,获得当前进程所在的 session id,具体步骤是
1.打开进程自身的 token,
HANDLE hToken = NULL;
HANDLE hProcess = GetCurrentProcess();
OpenProcessToken(hProcess, TOKEN_QUERY, &hToken);
2. DWORD dwTokenSessionId;
DWORD dwTsSize = 0;
GetTokenInformation(hToken, TokenSessionId, &dwTokenSessionId, sizeof(dwTokenSessionId), &dwTsSize));//TokenSessionId 是一个系统常量,可能需要最新的 SDK,
3. 现在已经得到token结构中的 session id, 也就是你的进程所在的 session
如果系统是 2000, 由于不支持用户切换所以 console session 始终是 0, 如果当前 session 不是0 那么就是 RDP session.
如果系统是 xp 以上, 你可以使用 WTSGetActiveConsoleSessionId 检查 console session id 如果和当前 session id 不一致那么就是运行在 RDP session
WTSGetActiveConsoleSessionId API 需要最新的 sdk ,如果没有安装的话可以自己从 kernel32.dll load.
转别人的帖子,没看明白 |
|