函數原型:
DWORD WTSGetActiveConsoleSessionId (VOID)
先看一下原文介紹:
The WTSGetActiveConsoleSessionId function retrieves the Terminal Services session currently attached to the physical console. The physical console is the monitor, keyboard, and mouse. Note that it is not necessary that Terminal Services be running for this function to succeed.
該函數可以用來獲取當前活動的會話ID,有時候我們通過枚舉explorer 的相關信息,來獲取相關進程的信息,但windows是個多用戶操作系統,當多個用戶登錄時會使通過枚舉explorer而得到的用戶信息不准確。所以應當先用WTSGetActiveConsoleSessionId獲得當前會話ID,再通過枚舉進程,通過比較sessionID進而得到的消息比較可靠。
例如:
DWORD dwSessionId = WTSGetActiveConsoleSessionId();
PWTS_PROCESS_INFO ppi = NULL;
DWORD dwProcessCount = 0;
if (WTSEnumerateProcesses(WTS_CURRENT_SERVER_HANDLE, 0, 1, &ppi, &dwProcessCount))
{
for (int i = 0; i <dwProcessCount; i ++)
{ //任務管理器里可能出現多個explorer
if (_wcsicmp(ppi[i].pProcessName, L"explorer.exe") == 0)
{
if (ppi[i].SessionId == dwSessionId)
{
break;
}
}
}
WTSFreeMemory(ppi);
}
..........
..........
..........
