Как проверить, имеем ли мы административные привилегии в системе Delphi , ОС и Железо , Windows
Как проверить, имеем ли мы административные привилегии в системе
Интернетчика спросили:
- Что такое "Червона Рута"?
- Это женщина-админ на сервере Компартии.
type
PTOKEN_GROUPS = TOKEN_GROUPS^;
function RunningAsAdministrator (): Boolean;
var
SystemSidAuthority: SID_IDENTIFIER_AUTHORITY = SECURITY_NT_AUTHORITY;
psidAdmin: PSID;
ptg: PTOKEN_GROUPS = nil ;
htkThread: Integer; { HANDLE }
cbTokenGroups: Longint; { DWORD }
iGroup: Longint; { DWORD }
bAdmin: Boolean;
begin
Result := false;
if not OpenThreadToken(GetCurrentThread(), // get security token
TOKEN_QUERY, FALSE, htkThread) then
if GetLastError() = ERROR_NO_TOKEN then
begin
if not OpenProcessToken(GetCurrentProcess(),
TOKEN_QUERY, htkThread) then
Exit;
end
else
Exit;
if GetTokenInformation(htkThread, // get #of groups
TokenGroups, nil , 0, cbTokenGroups) then
Exit;
if GetLastError() <> ERROR_INSUFFICIENT_BUFFER then
Exit;
ptg := PTOKEN_GROUPS( getmem( cbTokenGroups ) );
if not Assigned(ptg) then
Exit;
if not GetTokenInformation(htkThread, // get groups
TokenGroups, ptg, cbTokenGroups, cbTokenGroups) then
Exit;
if not AllocateAndInitializeSid(SystemSidAuthority,
2, SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS,
0, 0, 0, 0, 0, 0, psidAdmin) then
Exit;
iGroup := 0;
while iGroup < ptg^.GroupCount do // check administrator group
begin
if EqualSid(ptg^.Groups[iGroup].Sid, psidAdmin) then
begin
Result := TRUE;
break;
end ;
Inc( iGroup );
end ;
FreeSid(psidAdmin);
end ;
Данная статья описывает функцию RunningAsAdministrator для проверки административных привилегий в системе, используя API Windows.
Комментарии и вопросы :: 2011-06-07 12:28:17 :: re:Как проверить, имеем ли мы административные привилегии в системе пользователь: Sam .
и где же ответ на вопрос "Как проверить, имеем ли мы административные привилегии в системе"???
как использовать данную функцию? имя пользователя писать? логин? оно работает в домене?
:: 2011-06-27 16:04:04 :: re:Как проверить, имеем ли мы административные привилегии в системе пользователь: kan .
В примере проверяются права пользователя от имени которого запущена программа.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
:: Главная :: Windows ::