篆体字网 > 知识库

ntauthority

来源:篆体字网 2023-12-27 16:51:38 作者:篆字君

网上没有找到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;

上一篇:2018年万圣节

下一篇:2015年上映的电影

相关阅读