Навигация
Главная
Поиск
Новости
Статьи
ЧаВо
- - - - - - -
Файловый архив
Ссылки
Авторизация
Кто он-лайн

 

 
Главная arrow ЧаВо arrow Delphi arrow Как в Delphi проверить, запущена ли программа "под Администратором"?
Как в Delphi проверить, запущена ли программа "под Администратором"? Версия для печати
Написал Ярослав Гасов   
06.07.2003

Share this!

Это можно сделать следующей функцией:

 

function IsAdmin: Boolean;
var
   hAccessToken: THandle;
   ptgGroups: PTokenGroups;
   dwInfoBufferSize: DWORD;
   psidAdministrators: PSID;
   x: Integer;
   bSuccess: BOOL;
begin
   Result := False;
   bSuccess := OpenThreadToken(GetCurrentThread, TOKEN_QUERY, True, hAccessToken);
   if not bSuccess then
   begin
      if GetLastError = ERROR_NO_TOKEN then
      bSuccess := OpenProcessToken(GetCurrentProcess, TOKEN_QUERY, hAccessToken);
   end; 
   if bSuccess then 
   begin
      GetMem(ptgGroups, 1024); 
      bSuccess := GetTokenInformation(hAccessToken, TokenGroups, ptgGroups, 1024, dwInfoBufferSize);
      CloseHandle(hAccessToken);
      if bSuccess then 
      begin
         AllocateAndInitializeSid(SECURITY_NT_AUTHORITY, 2, SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS, 0, 0, 0, 0, 0, 0, psidAdministrators);
         {$R-} 
         for x := 0 to ptgGroups.GroupCount - 1 do
         if EqualSid(psidAdministrators, ptgGroups.Groups[x].Sid) then 
         begin
            Result := True; 
            Break;
         end;
         {$R+}
         FreeSid(psidAdministrators); 
      end;
      FreeMem(ptgGroups); 
   end;
end;
 
< Пред.   След. >
 
 

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


GASOV.COM © 2024