Lisabon ,что вам мешает в функции
.onInit менять значение
$INSTDIR в зависимости от переменной
$R0 ???
читать дальше »
Код:

Function .onInit
!insertmacro IsUserAdmin $R0
; с правами администратора
${If} $R0 == 1
StrCpy $INSTDIR "$PROGRAMFILES\Программа"
MessageBox MB_OK "$INSTDIR"
${EndIf}
; c ограниченной учеткой
${If} $R0 == 0
StrCpy $SYSDRIVE $WINDIR 2
StrCpy $INSTDIR "$SYSDRIVE\Программа"
MessageBox MB_OK "$INSTDIR"
${EndIf}
FunctionEnd