Re[4]: LogonUser в Windows7/Server2008R2
От: xaxaTyH  
Дата: 10.01.11 18:50
Оценка: :))
Здравствуйте, Jolly Roger, Вы писали:

JR>Здравствуйте, xaxaTyH, Вы писали:


JR>А Вы проверьте полученный токен на членство в группах (GetTokenInformation с TokenGroups).


Вывел группы и атрибуты токена таким образом:

/*Получение информации о группах токена*/
    DWORD dwTGSize = 0;
    PTOKEN_GROUPS lpTokenGroups;

    //Берем размер буфера
    ::GetTokenInformation(hToken, TOKEN_INFORMATION_CLASS::TokenGroups, NULL, 0, &dwTGSize);

    //Выделяем память под буфер
    lpTokenGroups = (PTOKEN_GROUPS)::LocalAlloc(LPTR, dwTGSize);

    if(!::GetTokenInformation(hToken, TOKEN_INFORMATION_CLASS::TokenGroups, lpTokenGroups, ::LocalSize(lpTokenGroups), &dwTGSize))
    {
        _tprintf_s(L"GetTokenInformation() FAILED with error code: %d\n", ::GetLastError());
        _ftprintf(fp, L"GetTokenInformation() FAILED with error code: %d\n", ::GetLastError());
        fclose(fp);
        ::CloseHandle(hToken);
        return 0;
    }
    else
    {
        _tprintf_s(L"GetTokenInformation() SUCCESS with error code: %d\n", ::GetLastError());
        _ftprintf(fp, L"GetTokenInformation() SUCCESS with error code: %d\n", ::GetLastError());
    }

    //Запись групп Token'a
    _tprintf_s(L"Token Groups for hToken:\n");

    for(int i = 0; i < lpTokenGroups->GroupCount; i++)
    {
        LPTSTR lptStringSid = NULL;

        if(!::ConvertSidToStringSid(lpTokenGroups->Groups->Sid, &lptStringSid))
        {
            _tprintf_s(L"ConvertSidToStringSid() FAILED with error code: %d\n", ::GetLastError());
            _ftprintf(fp, L"GConvertSidToStringSid() FAILED with error code: %d\n", ::GetLastError());
        }

        _tprintf_s(L"Sid: %s. Attributes: %d.\n", lptStringSid, lpTokenGroups->Groups->Attributes);
        _ftprintf(fp, L"Sid: %s. Attributes: %d.\n", lptStringSid, lpTokenGroups->Groups->Attributes);

        ::LocalFree(lptStringSid);
    }
        
    ::LocalFree(lpTokenGroups);
    /*Завершение получения информации о группах токена*/

Получил результат:

Не понял, почему 12 групп с одинаковым SID и что за значение SID — 7.. В Winnt.h такого значения не нашел.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.