2015-04-10 2 views
0

Я использую NSIS в качестве инструмента для упаковки в окне Windows 7.NSIS изменяет принадлежность dir/файла на платформах Win

Я очень тщательно установил права собственности на файл и разрешения на то, что хочу в исходной папке.

Однако, когда я выполняю упаковку, а затем развертываю пакет, он изменил все владельцы файлов на «Администраторы».

Первоначально у меня был администратор RequestExecutionLevel, но даже после удаления строки NSIS продолжал разворачивать файлы с помощью «Администраторы» в качестве владельца.

Это дает мне огромную головную боль.

Буду признателен за любые выводы по этому вопросу.

Я развернул плагин «AccessControl», но еще не нашел его документации, так что это тоже было бы полезно.

+0

Вы «развернули» плагин AccessControl? Документация для него находится в файле zip и в NSIS wiki ... – Anders

+0

Замечательно, мне жаль, что я не знал, что два дня назад! – Jim2B

ответ

1

NSIS не сохраняет права доступа из исходного каталога (это будет раздражать и не будет работать с файловой системой FAT32 и Posix)

Существует параметр групповой политики в Windows, которая решает, если файлы, созданные пользователем в группа администраторов принадлежит всем администраторам или только одному пользователю.

OutFile Test.exe 
RequestExecutionLevel user 
InstallDir "$Temp\Test" 

Section 
SetOutPath "$InstDir" 

!addplugindir "C:\NSIS\MyDownloadedPlugins\AccessControl\Plugins\" 
AccessControl::SetFileOwner "$InstDir" "Anders" 
Pop $0 
DetailPrint $0 

; S-1-5-32-545 is BUILTIN\Users 
AccessControl::GrantOnFile "$InstDir" "(S-1-5-32-545)" "GenericRead + AddFile + AddSubdirectory" 
Pop $0 
DetailPrint $0 

AccessControl::DenyOnFile "$InstDir" "(BA)" "AddFile" ; Silly example: Don't let people in the Administrators group create new files 
Pop $0 
DetailPrint $0 

SectionEnd 
0

Я думаю, что этот раздел на RequestExecutionLevel, вероятно, объясняет мои проблемы с установкой NSIS владельца на администратор.

4.8.1.34 RequestExecutionLevel

ни | пользователь | высокий | администратор

Задает требуемый уровень выполнения для Windows Vista и выше. Значение встроено в установочный файл и деинсталлятор XML и сообщает Windows, какой уровень привилегий требуется установщику. пользователь запрашивает обычный уровень пользователя без административных прав. , самый высокий уровень выполнения будет доступен для текущего пользователя и заставит Windows запрашивать у пользователя подтверждение эскалации привилегий. Запрос может запрашивать пароль пользователя . администратор запрашивает уровень администратора и вызывает Windows , также запрашивает пользователя. Не указывая,, который также является значением по умолчанию, сохранит манифест пустым и пусть Windows решит, какое выполнение должно быть выполнено . Windows автоматически определяет установщики NSIS и решает, что необходимы привилегии администратора. Из-за этого нет и admin [и по умолчанию] имеют практически такой же эффект.

Рекомендуется, по крайней мере, Microsoft, чтобы каждое приложение было , отмеченное требуемым уровнем выполнения. Немаркированные установщики: в режиме совместимости. Методы обхода этого режима включают , автоматически перемещая любые ярлыки, созданные в стартовом меню пользователя, до .Установщики, которые не должны устанавливать ничего в системные папки или записывать в реестр локального компьютера (HKLM), должны указать уровень выполнения пользователем.

Дополнительную информацию об этой теме можно найти на MSDN.

В основном установки требуемого уровня доступа к чему-либо, кроме пользователя | высокий ИЛИ не устанавливая его результаты во всем быть установлен администратора.

Моим решением будет установлен требуемый уровень доступа до пользователь.