Форум: "WinAPI";
Текущий архив: 2003.11.03;
Скачать: [xml.tar.bz2];
ВнизПроверка прав пользователя Найти похожие ветки
← →
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 вся ветка
Форум: "WinAPI";
Текущий архив: 2003.11.03;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.009 c