如何使用NSIS授予安装目录的权限?

问题描述 投票:0回答:1

我是NSIS命令的新手。我有一个安装程序文件,我在我的InstallDir上授予GenericReadGenericWrite权限。

以下是代码:

AccessControl :: GrantOnFile“$ INSTDIR \ WPFUI”“(BU)”“GenericRead + GenericWrite”

现在的问题是:任何非管理员用户都可以在我的安装目录中复制新文件和dll。

我想设置所需的权限,需要管理员权限才能复制任何新文件。

我已经尝试过与GenericRead + GenericExecute的运气,但仍然无法正常工作。

有人可以对此嗤之以鼻吗?

.net permissions nsis access-control
1个回答
1
投票

如果要安装到$ ProgramFiles这样的公共位置,则不应让普通用户对$ InstDir进行任何类型的写入访问,因为如果同一台计算机上的多个用户正在使用您的程序,则最终会出现问题。还有一些安全问题需要考虑。

正确的解决方案是更改您的应用程序,以便在用户第一次运行您的应用程序时将“模板数据”从$ InstDir复制到$ AppData和/或$ LocalAppData。

如果您不想这样做,那么您需要对更改ACL的方式进行更严格的限制。例如,您可以尝试限制它

AccessControl::GrantOnFile /NOINHERIT "$INSTDIR\WPFUI" "(BU)" "GenericRead + GenericWrite"
AccessControl::DenyOnFile /NOINHERIT "$INSTDIR\WPFUI" "(BU)" "AddFile"
© www.soinside.com 2019 - 2024. All rights reserved.