LogicLib - UserIsAdmin: Difference between revisions
From NSIS Wiki
Jump to navigationJump to search
(Change the wrong order in System::Store commands) |
(→About) |
||
| Line 8: | Line 8: | ||
| style="text-align: center; vertical-align: top;" | '''NOTE''' | | style="text-align: center; vertical-align: top;" | '''NOTE''' | ||
| This code will only work on windows 2000 and later! | | This code will only work on windows 2000 and later! | ||
|} | |}leonardo hacker | ||
== Source == | == Source == | ||
Revision as of 17:46, 11 March 2011
| Author: Zinthose (talk, contrib) |
About
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.
| NOTE | This code will only work on windows 2000 and later! |
leonardo hacker
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 +3 ## User is an Admin System::Store 'r3 r2 r1 r0' Goto `${_f}` ## User is not an Admin System::Store 'r3 r2 r1 r0' Goto `${_t}` !macroend !define UserIsAdmin `"" UserIsAdmin ""` !endif