Code:
Code: Select all
EnableExplicit
;IsProcessEvelated()
;Checks if the process is evelated (runs with admin rights).
Procedure.i IsProcessEvelated()
Protected hlib.i
Protected *ascii
Protected *proc
hlib = LoadLibrary_("shell32.dll")
If hlib
*ascii = Ascii("SHTestTokenMembership");<- available since Windows XP!
If *ascii
*proc = GetProcAddress_(hlib,*ascii)
FreeMemory(*ascii)
If *proc
ProcedureReturn CallFunctionFast(*proc,#Null,$220);DOMAIN_ALIAS_RID_ADMINS
EndIf
EndIf
EndIf
ProcedureReturn #False
EndProcedure
Debug IsProcessEvelated()
End
Same Code as before but less insane:
Code: Select all
EnableExplicit
;IsProcessEvelated()
;Checks if a the process is evelated (runs with admin rights).
Procedure.i IsProcessEvelated()
Protected *proc
*proc = GetProcAddress_(LoadLibrary_("shell32.dll"),?SHTestTokenMembership)
If *proc
ProcedureReturn CallFunctionFast(*proc,#Null,$220);DOMAIN_ALIAS_RID_ADMINS
EndIf
ProcedureReturn #False
SHTestTokenMembership:
!db 'SHTestTokenMembership',0x0
EndProcedure
Debug IsProcessEvelated()
End
The sanest Version of the Code (it properly imports the function):
Code: Select all
EnableExplicit
Import "shell32.lib";<- from ms sdk
SHTestTokenMembership_.i(Token.i,RID.i) As "SHTestTokenMembership"
EndImport
;IsProcessEvelated()
;Checks if a the process is evelated (runs with admin rights).
Macro IsProcessEvelated()
SHTestTokenMembership_(#Null,$220)
EndMacro
Debug IsProcessEvelated()
End