Win 7 下确定是否有管理员权限!

网上没有找到Delphi的,直接动手写出来,Delphi Xe2 测试通过。CSDN第一次写,以后有什么资料直接发上来共享。

 

type
 TCheckTokenMembership =  function (a: THandle;  b: PSID; c: PBOOL): BOOL;stdcall;


function IsAdmin: Boolean;
const
  SECURITY_BUILTIN_DOMAIN_RID = 32;
  DOMAIN_ALIAS_RID_ADMINS = 544;
var
  NtAuthority: _SID_IDENTIFIER_AUTHORITY;
  IsAdminMember: BOOL;
  SecurityIdentifier:PSID;
   hAdvapi32:THandle;
   CheckTokenMembership:TCheckTokenMembership;
begin
  Result := False;
  NtAuthority.Value[0] := 0;
  NtAuthority.Value[1] := 0;
  NtAuthority.Value[2] := 0;
  NtAuthority.Value[3] := 0;
  NtAuthority.Value[4] := 0;
  NtAuthority.Value[5] := 5;
  if (not AllocateAndInitializeSid(@NtAuthority , 2,
    SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS, 0, 0, 0, 0,
    0, 0, SecurityIdentifier)) then
    Exit;
   hAdvapi32 := LoadLibrary(PWideChar('Advapi32.dll' ));
   CheckTokenMembership :=  GetProcAddress( hAdvapi32, 'CheckTokenMembership' );

  if ( not CheckTokenMembership(0, SecurityIdentifier, @IsAdminMember)) then
                IsAdminMember := FALSE;
  FreeSid(SecurityIdentifier);
  Result := IsAdminMember;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if IsAdmin then
    ShowMessage('is admin');
end;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值