Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.11.03;
Скачать: CL | DM;

Вниз

Проверка прав пользователя   Найти похожие ветки 

 
aldapooh   (2003-08-27 12:44) [0]

Я получаю Token с помощью LogonUser. Как проверить права этого пользователя, принадлежность к группе?
Кажется подойдут AccessCheck и CheckTokenMembership, но я не уверен и вообще в некой растерянности. Если можно пару советов или ссылок с примером желательно на Delphi.
Заранее благодарен!


 
aldapooh   (2003-08-29 10:23) [1]

Где то я наврал потому что CheckTokenMembership(Token,SID,IsMember) всегда возвращает мне IsMember = True
Может я не тот токен или сид передаю...
Любые ваши комментариии...
Спасибо!


 
clickmaker ©   (2003-08-29 12:45) [2]

Проверка, является ли юзер админом. Ф-ию несложно переделать для любой другой группы

function RunningAsAdministrator: boolean;
const
SECURITY_BUILTIN_DOMAIN_RID = $00000020;
DOMAIN_ALIAS_RID_ADMINS = $00000220;
SystemSidAuthority: SID_IDENTIFIER_AUTHORITY = (Value: (0,0,0,0,0,5));
var
hThread: THandle;
ptg: PTokenGroups;
cbTokenGroups: DWORD;
i: integer;
psidAdmin: PSID;
begin
Result := false;

if OpenThreadToken (GetCurrentThread, TOKEN_QUERY, FALSE, hThread) = FALSE then begin

if GetLastError = ERROR_NO_TOKEN then begin

if OpenProcessToken(GetCurrentProcess, TOKEN_QUERY, hThread) = FALSE then
Exit;
end else
Exit;
end;

if GetTokenInformation(hThread, TokenGroups, nil, 0, cbTokenGroups) <> FALSE then
Exit;

if GetLastError <> ERROR_INSUFFICIENT_BUFFER then
Exit;

ptg := PTokenGroups(LocalAlloc(LPTR, cbTokenGroups));
if (ptg = nil) then Exit;

if GetTokenInformation (hThread, TokenGroups, ptg, cbTokenGroups, cbTokenGroups) = FALSE then
Exit;

if AllocateAndInitializeSid(SystemSidAuthority, 2, SECURITY_BUILTIN_DOMAIN_RID,
DOMAIN_ALIAS_RID_ADMINS, 0, 0, 0, 0, 0, 0, psidAdmin) = FALSE then begin
LocalFree(Cardinal(ptg));
Exit;
end;

for i := 0 to ptg^.GroupCount-1 do begin

if EqualSid(ptg^.Groups[i].Sid, psidAdmin) then begin

Result := true;
break;
end;
end;

FreeSid(psidAdmin);
LocalFree(Cardinal(ptg));
end;



Страницы: 1 вся ветка

Текущий архив: 2003.11.03;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.016 c
3-8315
Леван Варшанидзе
2003-10-13 10:23
2003.11.03
Стиль и размер фонта отдельной строки Richedit


1-8408
zedich
2003-10-22 14:55
2003.11.03
Книжка по Delphi 6


8-8544
Freddy
2003-07-03 10:21
2003.11.03
Графическое отображение WAV-файла на экране


4-8734
Rel_
2003-08-28 11:29
2003.11.03
HDC


1-8514
S!R!X
2003-10-23 15:18
2003.11.03
Выполнение команд в другом приложении с послед. выводом результ.