LogicLib - UserIsAdmin: Difference between revisions
From NSIS Wiki
Jump to navigationJump to search
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
== About == | == About == | ||
Library to extend the LogicLib library to allow for testing if the current security context has Administrative rights. | {{PageAuthor|Zinthose}}Library to extend the LogicLib library to allow for testing if the current security context has Administrative rights. | ||
This code is based on the [[IsUserAdmin]] macros done by [[User:Lilla|Lilla]]. | This code is based on the [[IsUserAdmin]] macros done by [[User:Lilla|Lilla]]. | ||
Line 54: | Line 52: | ||
!endif | !endif | ||
</highlight-nsis> | </highlight-nsis> | ||
[[Category:User Accounts Related Functions]] |
Revision as of 22:35, 24 July 2009
About
Author: Zinthose (talk, contrib) |
Library to extend the LogicLib library to allow for testing if the current security context has Administrative rights.
This code is based on the IsUserAdmin macros done by Lilla.
Source
; ---------------------------- ; LogicLib_Ext.nsh ; ---------------------------- ; ; Library to extend the 'LogicLib' library's existing functions. ; !ifndef ___LOGICLIB_EXT__NSH___ !define ___LOGICLIB_EXT__NSH___ !include 'LogicLib.nsh' ; ----------------------- ; UserIsAdmin ; ----------------------- ; ; Example: ; ${If} ${UserIsAdmin} ; DetailPrint "Current user security context has local administrative rights." ; ${Else} ; DetailPrint "Current user security context dose NOT have local administrative rights." ; ${EndIf} ; !macro _UserIsAdmin _a _b _t _f System::Store 'p0 p1 p2 p3' System::Call '*(&i1 0,&i4 0,&i1 5)i.r0' System::Call 'advapi32::AllocateAndInitializeSid(i r0,i 2,i 32,i 544,i 0,i 0,i 0,i 0,i 0,i 0,*i .r1)i.r2' System::Free $0 System::Call 'advapi32::CheckTokenMembership(i n,i r1,*i .r2)i.r3' System::Call 'advapi32::FreeSid(i r1)i.r2' StrCmp $3 0 0 +4 ## User is an Admin System::Store 'r0 r1 r2 r3' Goto `${_f}` ## User is not an Admin System::Store 'r0 r1 r2 r3' Goto `${_t}` !macroend !define UserIsAdmin `"" UserIsAdmin ""` !endif