» UserInfo: Определение типа учетной записи и правами

K.A.V.
www.oszone.net
22.02.2010
Автор: kotkovets
Последнее обновление: 18.12.2010


Очень часто бывает нужно узнать тип учетной записи пользователя и какими правами обладает текущий пользователь.
Плагин UserInfo, поставляемый в стандартной комлектации NSIS, решает этот вопрос.
Плагин работает только в среде Windows NT , это означает, что не будет работать в Win9x.
UserInfo::GetName
Pop $0
Возвращает в переменную $0 текущее имя пользователя.


UserInfo::GetAccountType
Pop $1
Определяет тип учетной записи. Возвращаемые значения переменной $1:
Admin - административная группа.
Power - группа опытных пользователей.
User - пользовательская группа.
Guest - гостевая группа (Гость).

UserInfo::GetOriginalAccountType
Pop $2
Определяет какими правами обладает текущий пользователь. Возвращаемые значения переменной $2:
Admin - административными (полными правами)
Power - правами опытных пользователей
User - ограниченые права.
Guest - правами "Гостя".

Пример проверки перед инсталляцией на текущие права пользователя,
если это будет пользователь, с правами администратора,
то папка установки: "$PROGRAMFILES\Программа",
а если пользователь с ограниченными правами, то папка установки: "диск, куда установлена система\Программа"
!include "MUI2.nsh"

Name "UserInfo"
Caption "UserInfo.dll test"
OutFile UserInfo.exe
InstallDir "$PROGRAMFILES\Программа"

!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE "Russian"

RequestExecutionLevel user

Function .OnInit
  ClearErrors
  UserInfo::GetOriginalAccountType
  Pop $0
 IfErrors Done
   StrCmp $0 "Admin" +3 0
   ReadEnvStr $R0 HOMEDRIVE
   StrCpy "$INSTDIR" "$R0\Программа"
 Done:
FunctionEnd

Section
  MessageBox MB_ICONINFORMATION "$INSTDIR"
SectionEnd