Click here download IsUserAdmin.asm
;###############################################################################################
; IsUserAdmin()
; - Port of MSDN's Code to assembly. Should work on 2000 and above. As the shell API wrapper IsUserAdmin()
; does not work with Windows 2000.
;
; Example:
; invoke IsUserAdmin
; test eax, eax
; jz @@not_admin
;
; August 3rd, 2010
; Phr0stic
;###############################################################################################
IsUserAdmin PROC
LOCAL NtAuthority:SID_IDENTIFIER_AUTHORITY
LOCAL AdministratorsGroup:SID
LOCAL fAdmin:BOOL
invoke RtlZeroMemory, addr NtAuthority, sizeof SID_IDENTIFIER_AUTHORITY
mov NtAuthority.Value[5], 5
mov fAdmin, FALSE
invoke AllocateAndInitializeSid, addr NtAuthority, 2, SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS, 0, 0, 0, 0, 0, 0, addr AdministratorsGroup
test eax, eax
jz short @@admin_end
lea eax, AdministratorsGroup
mov eax, [eax]
xchg ebx, eax
invoke CheckTokenMembership, 0, ebx, addr fAdmin
invoke FreeSid, addr AdministratorsGroup
mov eax, fAdmin
ret
@@admin_end:
xor eax, eax
ret
IsUserAdmin END