Хотелось бы уяснить ещё одну вещю. Почему в качестве buf нельзя использовать просто buf[1024]:BYTE (или другой необходимый размер), а нужно выделять память через GlobalAlloc? Буфер должен быть обязательно точно равен информации запрашиваемой во втором параметре? Где это сказано? Почему? MSDN ? Мне казалось, что главное, чтобы размер буфера не был меньше требуемого. Или почему нельзя так buf:TOKEN_USER?
vg Про сохранение EBX. Под wind'ой принято сохранять и восстанавливать регистры EBX, EDI, ESI и EBP на время работы своего кода, разумеется, если свой код их использует. Почему в качестве buf нельзя использовать просто buf[1024]:BYTE (или другой необходимый размер) Этого ни кто не утверждал. Буфер должен быть обязательно точно равен информации запрашиваемой во втором параметре? Не должен. Мне казалось, что главное, чтобы размер буфера не был меньше требуемого. Верно. Или почему нельзя так buf:TOKEN_USER? Наверное можно. Но в #24 ты написал, что твоя Vista хочет 36 байт, а не 8. Ты все правильно понимаешь. Для меня загадка, почему у тебя не получалось собрать воедино эти факты в коде. ps СПАСИБО tylerdurden, решение запосил он, через 12 минут после твоего вопроса.