|
Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » .: NSIS - все вопросы :. часть 2. |
|
.: NSIS - все вопросы :. часть 2.
|
Ветеран Сообщения: 1216 |
Профиль | Отправить PM | Цитировать
Данная тема предназначена для обсуждения вопросов, связанных с инсталлятором Nullsoft Scriptable Install System, или просто NSIS. Сайт приложения. Описание: Текущая версия: NSIS 3.05 от 15 декабря 2019 года Скачать | Архив сборок версии Первая часть этой темы Скачать первую часть этой темы одним архивом ВНИМАНИЕ! прежде, чем задать вопрос, почитайте, где Вы найдете ответы на большинство вопросов: Справочник по NSIS - создан силами нашего сообщества. Руководство пользователя. Перевод – Поляков А.В, зеркало Документация Утилиты разработчика Расширение функциональности Примеры скриптов на нашем форуме Скрипт NSIS для перепаковки AIMP2+Сборки Тема для Notepad++(пример парсинга XML) Достоинства Ещё немного полезной информации: |
|
------- Отправлено: 12:02, 09-12-2012 |
Новый участник Сообщения: 1
|
Профиль | Отправить PM | Цитировать Добрый денечек. Много лет читаю эту замечательную темку. Образования в этом деле не имею. Но с темы по мелочам все понятненько. Несколько раз делал шутки в виде сообщений в несколько ходов с вопросами и подсовывал их жене вместо ее браузера. Во смеху было. А сейчас совсем я в непонятках с этими RequestExecutionLevel. Такой вопросик. Какая получается разница если установщик позначен RequestExecutionLevel highest или RequestExecutionLevel admin. Интересует чтобы мой файлик смог сделать то что делает администратор. Для этого нужно только обязательно RequestExecutionLevel admin? Или подойдет RequestExecutionLevel highest? Как я понял в установщика с RequestExecutionLevel admin самые высокие права. Тогда какие функции теряет установщик с RequestExecutionLevel highest в сравнении с RequestExecutionLevel admin? Совсем не понятно. Если не тяжело, пожалуйста объясните простенько. Спасибочки.
|
Отправлено: 10:15, 07-02-2021 | #2561 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 2358
|
Профиль | Отправить PM | Цитировать Простая (казалось бы...) задача : Нужно определить наличие ключей в реестре.
ОС Windows 10 (20h2) x64, ключи : HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsSelfHost\UI\Visibility HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Defender\Spynet Не тут то было... Права доступа похоже не при чём (да и вроде как не нужны для этого...). Пример, который нормально работает (проверял в W7) с "крутым" владельцем другого ключа ( с TrustedInstaller) : !addplugindir . !include "LogicLib.nsh" !include "Registry.nsh" OutFile "IfKeyExists-test.exe" RequestExecutionLevel admin Var NameKey Section StrCpy $NameKey "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\AGP" ClearErrors ${registry::KeyExists} "$NameKey" $R0 ${If} $R0 = -1 MessageBox MB_OK "NO Key" ${ElseIf} $R0 = 0 MessageBox MB_OK "OK!" ${EndIf} ${registry::unload} SectionEnd В чём дело ? Кто "охраняет" конкретно эти ключи ? У кого какие соображения ? ps к слову сказать, эти ключи не находятся при получении ACL, и при использовании команд PowerShell, и при работе с subinacl.exe... |
Последний раз редактировалось MKN, 04-03-2021 в 15:34. Отправлено: 15:22, 04-03-2021 | #2562 |
Старожил Сообщения: 352
|
Профиль | Отправить PM | Цитировать Цитата MKN:
Примерно таким макросом можно оформить проверку: # macro + def !define RegKeyExists '!insertmacro RegKeyExists' !macro RegKeyExists RETURN ROOTKEY SUBKEY Push $0 ClearErrors EnumRegValue $0 ${ROOTKEY} "${SUBKEY}" 0 IfErrors 0 +5 EnumRegKey $0 ${ROOTKEY} "${SUBKEY}" 0 IfErrors 0 +3 StrCpy ${RETURN} 0 Goto +2 StrCpy ${RETURN} 1 Pop $0 !macroend # Example ${RegKeyExists} $R0 HKLM64 "SOFTWARE\Microsoft\WindowsSelfHost\UI\Visibility" |
|
Отправлено: 16:24, 04-03-2021 | #2563 |
Ветеран Сообщения: 2358
|
Профиль | Отправить PM | Цитировать Цитата iglezz:
И я вроде как "выудил" эти ключи из реестра, в том же виде, какими они и были в x64... Или в рег-плагине необходимо конкретно указывать на разрядность ОС ? (в доке этого не видел...) Вероятно забыл про SetRegView 64... и как быть с репликой из ps ? |
|
Последний раз редактировалось MKN, 04-03-2021 в 17:38. Отправлено: 17:08, 04-03-2021 | #2564 |
Старожил Сообщения: 352
|
Профиль | Отправить PM | Цитировать MKN,
Да, в 32 битных их нет. Это легко увидеть, если открыть 32-битный %WINDIR%\SysWOW64\regedit.exe Ключей WindowsSelfHost и Windows Defender там не будет. Что до плагина, то он староват и не в курсе про реестр в x64. "В крации", реестр в x64 состоит из трёх загончиков (общий, 32бит, 64 бит), и для доступа во чужой загончик надо использовать волшебное слово при использовании функций WinAPI. Плагин таким фокусам не обучен, add: но на него действует SetRegView 64 Цитата MKN:
|
|
Последний раз редактировалось iglezz, 04-03-2021 в 21:16. Отправлено: 17:43, 04-03-2021 | #2565 |
Ветеран Сообщения: 2358
|
Профиль | Отправить PM | Цитировать Цитата iglezz:
Цитата iglezz:
|
||
Отправлено: 17:49, 04-03-2021 | #2566 |
Старожил Сообщения: 352
|
Профиль | Отправить PM | Цитировать Цитата MKN:
Для остального можно дёрнуть ключ отдельно в 32 и 64 бит режиме и сравнить выхлоп. Даже батничком на `reg query %REGPATH% /ve` можно реализовать. Цитата MKN:
|
||
Отправлено: 18:15, 04-03-2021 | #2567 |
Ветеран Сообщения: 2358
|
Профиль | Отправить PM | Цитировать Цитата iglezz:
Цитата iglezz:
Хотя AccessControl plug-in с большим трудом всё же упросил доработать, но нужный инфо-вывод в SDDL формате... Надо как то парсить-расшифровывать. Одна морока... |
||
Отправлено: 18:23, 04-03-2021 | #2568 |
Старожил Сообщения: 352
|
Профиль | Отправить PM | Цитировать MKN, Вот такой макрос получился
nsis RegKeyExists
# RETURN value: # 0 : not exists # >0 : exists !define RegKeyExists '!insertmacro RegKeyExists' !macro RegKeyExists RETURN ROOTKEY SUBKEY Push $0 Push $1 StrCpy $0 0 SetRegView 32 ClearErrors EnumRegKey $1 ${ROOTKEY} "${SUBKEY}" 0 IfErrors +2 IntOp $0 $0 + 1 SetRegView lastused ${If} ${RunningX64} SetRegView 64 ClearErrors EnumRegKey $1 ${ROOTKEY} "${SUBKEY}" 0 IfErrors +2 IntOp $0 $0 + 1 SetRegView lastused ${EndIf} Pop $1 Exch $0 Pop ${RETURN} !macroend Если есть необходимость знать точно, существует ключ для 32 или 64 бит процесса, то чуть сложнее будет Внезапно оказалось, что SetRegView 64 благотворно влияет на плагин registry. возвращает 0, т.е. ключ найден Цитата MKN:
|
|
Последний раз редактировалось iglezz, 04-03-2021 в 22:39. Отправлено: 20:53, 04-03-2021 | #2569 |
Ветеран Сообщения: 2358
|
Профиль | Отправить PM | Цитировать Цитата iglezz:
Цитата iglezz:
ps А что делает SetRegView lastused, если популярно разъяснить ? Возвращает в исходное состояние чтение\запись из\в реестре ? Т.е. всё равно это эквивалентно записи SetRegView32(64) в нужном месте кода ? |
||
Последний раз редактировалось MKN, 05-03-2021 в 10:17. Отправлено: 10:05, 05-03-2021 | #2570 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Инфо - [ликбез] Помощь начинающим .:[все вопросы]:. часть 2 | dimadr | Наборы обновлений для Windows XP/2003/Windows 7 | 267 | 14-02-2020 08:25 | |
[архив].: NSIS - все вопросы :. | kotkovets | Автоматическая установка приложений | 3387 | 09-12-2012 11:56 | |
Инфо - [ликбез] Помощь начинающим .:[все вопросы]:. часть 1 | jameszero | Наборы обновлений для Windows XP/2003/Windows 7 | 1491 | 22-07-2011 22:42 | |
Выбор|модернизация процессора .:[все вопросы]:. Часть I | Myxa | Выбор отдельных компонентов компьютера и конфигурации в целом | 1845 | 01-01-2011 19:18 | |
Вопросы по создателю инсталляций NSIS | MaxDELETE | Программное обеспечение Windows | 14 | 04-07-2007 10:01 |
|