A função IsAdmin faz essa verificação.
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;
procedure
TForm1.Button1Click(Sender: TObject);
begin
if isAdmin
then
begin
ShowMessage('Logado
como Administrator');
end;
end;
Nenhum comentário:
Postar um comentário