uses
WinAPI.Windows, System.SysUtils;
function IsRunningAsAdmin: Boolean;
var
hToken: THandle;
ElevationType: TTokenElevationType;
ReturnLength: DWORD;
begin
Result := False;
if OpenProcessToken(GetCurrentProcess, TOKEN_QUERY, hToken) then
try
if GetTokenInformation(hToken, TokenElevationType, @ElevationType, SizeOf(ElevationType), ReturnLength) then
Result := (ElevationType = TokenElevationTypeDefault) or (ElevationType = TokenElevationTypeFull);
finally
CloseHandle(hToken);
end;
end;