S>>>как по полученому SID TokenGroups узнать имя группы?
x64>>LookupAccountSid()
S>msdn пишет что эта функция возвращает имя пользователя, и может возвращать название домена. но ни как не группы.
The LookupAccountSid function accepts a security identifier (SID) as input. It retrieves the name of the account for this SID and the name of the first domain on which this SID is found.
Меньше фантазируйте при переводе. Или просто сделайте как вам сказали.
кстати надо же, а решение ведь всего на 5 сообщений ниже...
http://rsdn.ru/forum/message/3312911.1.aspxАвтор: Were
Дата: 04.03.09
это что, в каком то вузе лабы по сетям?
Здравствуйте, Аноним, Вы писали:
S>>>>как по полученому SID TokenGroups узнать имя группы?
x64>>>LookupAccountSid()
S>>msdn пишет что эта функция возвращает имя пользователя, и может возвращать название домена. но ни как не группы.
А>А>The LookupAccountSid function accepts a security identifier (SID) as input. It retrieves the name of the account for this SID and the name of the first domain on which this SID is found.
А>Меньше фантазируйте при переводе. Или просто сделайте как вам сказали.
оффтоп, а как тогда по английски пользователь тот который залогинился? login чтоли
Здравствуйте, Аноним, Вы писали:
S>>как по полученому SID TokenGroups узнать имя группы?
А>NetUserGetGroups
А>Между прочим реально токен залогиненного юзера может иметь в своих мемберах совсем иной список групп. Потому если у вас есть токен правильнее будет сделать GetTokenInformation(..TokenGroups..)
нет. токена нету. я его получаю на основе того который залогинился
HANDLE hToken;
DWORD cbNeeded;
PTOKEN_GROUPS pGroup;
// получаем идентификатор привилегии
//if (!LookupPrivilegeValue(NULL, _nameUser, &Luid))
// return FALSE;
// получаем токен текущего потока
if (!OpenThreadToken(GetCurrentThread(), TOKEN_QUERY, FALSE, &hToken))
{
if (GetLastError() != ERROR_NO_TOKEN)
return FALSE;
// получаем токен процесса
if (!OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, &hToken))
return FALSE;
}
// определяем размер буфера, необходимый для получения
// всех групп
if (!GetTokenInformation(hToken, TokenGroups, NULL, 0, &cbNeeded))
{
if (GetLastError() != ERROR_INSUFFICIENT_BUFFER)
{
DWORD dwError = GetLastError();
CloseHandle(hToken);
return SetLastError(dwError), FALSE;
}
}
// выделяем память для выходного буфера
pGroup = (PTOKEN_GROUPS)_alloca(cbNeeded);
_ASSERTE(pGroup != NULL);
// получаем список групп
if (!GetTokenInformation(hToken, TokenGroups, pGroup, cbNeeded,
&cbNeeded))
{
DWORD dwError = GetLastError();
CloseHandle(hToken);
return SetLastError(dwError), FALSE;
}
CloseHandle(hToken);
Здравствуйте, ssy2, Вы писали:
S>Здравствуйте, Аноним, Вы писали:
S>>>>>как по полученому SID TokenGroups узнать имя группы?
x64>>>>LookupAccountSid()
S>>>msdn пишет что эта функция возвращает имя пользователя, и может возвращать название домена. но ни как не группы.
А>>А>>The LookupAccountSid function accepts a security identifier (SID) as input. It retrieves the name of the account for this SID and the name of the first domain on which this SID is found.
А>>Меньше фантазируйте при переводе. Или просто сделайте как вам сказали.
S>оффтоп, а как тогда по английски пользователь тот который залогинился? login чтоли
user, login
account это учетная запись