Здравствуйте, Alex Fedotov, Вы писали:
А>>WTSEnumerateSessions вчера пробывал, возникла проблема. Она ничего мне не возвращает, а
А>>GetLastError() выдает ошибку 1702 (The binding handle is invalid).
А>>Вызываю функцию так — WTSEnumerateSessions(WTS_CURRENT_SERVER_HANDLE,0,1,buf,&count);
А>>...
AF>А что такое buf?
В общем, вот так — работает:
#include <windows.h>
#include <stdio.h>
#include <tchar.h>
#include <crtdbg.h>
#include <wtsapi32.h>
#pragma comment(lib, "wtsapi32.lib")
int main ( int argc, char ** argv )
{
PWTS_SESSION_INFO pInfo;
ULONG nCount;
if (!WTSEnumerateSessions(WTS_CURRENT_SERVER_HANDLE, 0, 1,
&pInfo, &nCount))
{
_tprintf(_T("WTSEnumerateSessions failed (0x%08X)\n"),
GetLastError());
return -1;
}
for (ULONG i = 0; i < nCount; i++)
{
PTSTR pszUserName;
ULONG cchUserName;
if (!WTSQuerySessionInformation(WTS_CURRENT_SERVER_HANDLE,
pInfo[i].SessionId, WTSUserName, &pszUserName,
&cchUserName))
{
_tprintf(_T("WTSQuerySessionInformation failed (0x%08X)\n"),
GetLastError());
continue;
}
_tprintf(_T("%d: %s\n"), pInfo[i].SessionId, pszUserName);
WTSFreeMemory(pszUserName);
}
WTSFreeMemory(pInfo);
return 0;
}