判断当前用户是否具有管理员权限

 

 1 const
 2   SECURITY_NT_AUTHORITY: SID_IDENTIFIER_AUTHORITY  =  (Value: ( 0 0 0 0 0 5 ));
 3   SECURITY_BUILTIN_DOMAIN_RID  =  $ 00000020 ;
 4   DOMAIN_ALIAS_RID_ADMINS  =  $ 00000220 ;
 5
 6 function  IsAdmin: Boolean;
 7 var
 8   hAccessToken: THandle;
 9   ptgGroups: PTokenGroups;
10   dwInfoBufferSize: DWORD;
11   psidAdministrators: PSID;
12   x: Integer;
13   bSuccess: BOOL;
14 begin
15   Result   : =  False;
16   bSuccess : =  OpenThreadToken(GetCurrentThread, TOKEN_QUERY, True,
17     hAccessToken);
18    if   not  bSuccess  then
19    begin
20      if  GetLastError  =  ERROR_NO_TOKEN  then
21       bSuccess : =  OpenProcessToken(GetCurrentProcess, TOKEN_QUERY,
22         hAccessToken);
23    end ;
24    if  bSuccess  then
25    begin
26     GetMem(ptgGroups,  1024 );
27     bSuccess : =  GetTokenInformation(hAccessToken, TokenGroups,
28       ptgGroups,  1024 , dwInfoBufferSize);
29     CloseHandle(hAccessToken);
30      if  bSuccess  then
31      begin
32       AllocateAndInitializeSid(SECURITY_NT_AUTHORITY,  2 ,
33         SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS,
34          0 0 0 0 0 0 , psidAdministrators);
35        { $R- }
36        for  x : =   0   to  ptgGroups.GroupCount  -   1   do
37          if  EqualSid(psidAdministrators, ptgGroups.Groups[x].Sid)  then
38          begin
39           Result : =  True;
40           Break;
41          end ;
42        { $R+ }
43       FreeSid(psidAdministrators);
44      end ;
45     FreeMem(ptgGroups);
46    end ;
47 end ;

 

转载于:https://www.cnblogs.com/zzling/archive/2009/08/29/1556297.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值