Список залогиненых пользователей в ХП
От: Begemotina  
Дата: 14.10.03 07:15
Оценка:
Привет.

Стоит задача получить список всех загогиненых пользователей в ХП на данный момент, вернее даже надо полностью реализовать последнюю вкладку в Task Managere (под XP). и вот пробелма пока не могу найти решение , подскажите плиз..

З.Ы, а если кто еще подскажет как получить инфо по девайсам которые висят на Primary master — secomdary slave (модел, номер, количество цилиндров\головок ...).. буду вообще щаслив

З.Ы.Ы WMI — не желательно

14.10.03 11:47: Перенесено из 'C/C++'
Re: Список залогиненых пользователей в ХП
От: Alex Fedotov США  
Дата: 14.10.03 07:20
Оценка:
Здравствуйте, Begemotina, Вы писали:

B>Стоит задача получить список всех загогиненых пользователей в ХП на данный момент, вернее даже надо полностью реализовать последнюю вкладку в Task Managere (под XP). и вот пробелма пока не могу найти решение , подскажите плиз..


WTSEnumerateSessions, WTSQuerySessionInformation.
-- Alex Fedotov
Re[2]: Список залогиненых пользователей в ХП
От: Аноним  
Дата: 14.10.03 07:40
Оценка:
Здравствуйте, Alex Fedotov, Вы писали:

WTSEnumerateSessions, WTSQuerySessionInformation.

WTSEnumerateSessions вчера пробывал, возникла проблема. Она ничего мне не возвращает, а
GetLastError() выдает ошибку 1702 (The binding handle is invalid).
Вызываю функцию так — WTSEnumerateSessions(WTS_CURRENT_SERVER_HANDLE,0,1,buf,&count);
...
Re[3]: Список залогиненых пользователей в ХП
От: Alex Fedotov США  
Дата: 14.10.03 07:50
Оценка:
Здравствуйте, Аноним, Вы писали:

А>WTSEnumerateSessions вчера пробывал, возникла проблема. Она ничего мне не возвращает, а

А>GetLastError() выдает ошибку 1702 (The binding handle is invalid).
А>Вызываю функцию так — WTSEnumerateSessions(WTS_CURRENT_SERVER_HANDLE,0,1,buf,&count);
А>...

А что такое buf?
-- Alex Fedotov
Re[4]: Список залогиненых пользователей в ХП
От: Alex Fedotov США  
Дата: 14.10.03 08:02
Оценка:
Здравствуйте, 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;
}
-- Alex Fedotov
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.