Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Пользователь


Сообщения: 52
Благодарности: 2

Профиль | Отправить PM | Цитировать


Хотел подытожить. Для многих будет очень познавательно. Три рабочих примера.

Пример 1
Код: Выделить весь код
  Unicode true
OutFile "1-test.exe"
!Include "LogicLib.nsh"
RequestExecutionLevel highest
Function .onInit
System::Call setupapi::IsUserAdmin()i.r0
${If} $0 = 1
MessageBox MB_OK|MB_ICONINFORMATION "Есть права администратора"     
${Else}
MessageBox MB_OK|MB_ICONINFORMATION "Нет прав администратора. До свидания !"
Quit
${EndIf}
FunctionEnd
Section
SectionEnd

Пример 2
Код: Выделить весь код
  Unicode true
OutFile "2-test.exe"
!Include "LogicLib.nsh"
RequestExecutionLevel highest
Function .onInit
System::Call setupapi::IsUserAdmin()i.r0
Pop $0
${If} $0 = "admin"
MessageBox MB_OK|MB_ICONINFORMATION "Нет прав администратора. До свидания !"
Quit
${EndIf}
MessageBox MB_OK|MB_ICONINFORMATION "Есть права администратора"
FunctionEnd
Section
SectionEnd

Пример 3 для конкретики для кого запрет
Код: Выделить весь код
  Unicode true
OutFile "3-test.exe"
!Include "LogicLib.nsh"
RequestExecutionLevel highest
Function .onInit
UserInfo::GetAccountType
Pop $1
${If} $1 == "Guest"
${OrIf} $1 == "User"
MessageBox MB_OK|MB_ICONINFORMATION "Нет прав администратора. До свидания !"
Quit
${EndIf}
MessageBox MB_OK|MB_ICONINFORMATION "Есть права администратора" 
FunctionEnd
Section
SectionEnd

Эти примеры объединяет RequestExecutionLevel highest. По другому это совсем не работает.
Есть нюанс. В виста и семь с выключенным UAC - это когда системный настройщик уведомлений в крайнем нижнем положении и в восемь и десять с полностью выключенным UAC - это когда системный настройщик уведомлений в крайнем нижнем положении и нужные отключения в реестре.
В этом случае пользователи без прав не смогут запустить установщик, не двойным кликом, не от имени администратора. Как в ХР.
Если же системный настройщик уведомлений будет в другом положении, то пользователь без прав не сможет запустить установщик двойным кликом, но все же сможет запустить его от имени администратора.
Простыми словами: добиться Quit для пользователя без прав для установщика с большими привилегиями с включенным UAC не возможно. Исходя из того, что я написал эти коды на практике мало полезны. Зря потратил два дня на обобщение всего этого. Почему тогда этого нету в справке? Поправьте меня, если я ошибаюсь.

Последний раз редактировалось динозавра, 30-01-2021 в 13:48. Причина: Исправил грамматические ошибки


Отправлено: 13:31, 30-01-2021 | #2542