tests/nsis3/share/doc/nsis/Examples/UserInfo/UserInfo.nsi

Summary

Maintainability
Test Coverage
Name "UserInfo.dll test"
OutFile UserInfo.exe

!define REALMSG "$\nOriginal non-restricted account type: $2"

Section
    ClearErrors
    UserInfo::GetName
    IfErrors Win9x
    Pop $0
    UserInfo::GetAccountType
    Pop $1
    # GetOriginalAccountType will check the tokens of the original user of the
    # current thread/process. If the user tokens were elevated or limited for
    # this process, GetOriginalAccountType will return the non-restricted
    # account type.
    # On Vista with UAC, for example, this is not the same value when running
    # with `RequestExecutionLevel user`. GetOriginalAccountType will return
    # "admin" while GetAccountType will return "user".
    UserInfo::GetOriginalAccountType
    Pop $2
    StrCmp $1 "Admin" 0 +3
        MessageBox MB_OK 'User "$0" is in the Administrators group${REALMSG}'
        Goto done
    StrCmp $1 "Power" 0 +3
        MessageBox MB_OK 'User "$0" is in the Power Users group${REALMSG}'
        Goto done
    StrCmp $1 "User" 0 +3
        MessageBox MB_OK 'User "$0" is just a regular user${REALMSG}'
        Goto done
    StrCmp $1 "Guest" 0 +3
        MessageBox MB_OK 'User "$0" is a guest${REALMSG}'
        Goto done
    MessageBox MB_OK "Unknown error"
    Goto done

    Win9x:
        # This one means you don't need to care about admin or
        # not admin because Windows 9x doesn't either
        MessageBox MB_OK "Error! This DLL can't run under Windows 9x!"

    done:
SectionEnd