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

时间:2018-03-05 06:38:37

标签: .net permissions nsis access-control

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

以下是代码:

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

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

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

我已经尝试过GenericRead + GenericExecute,但仍然无效。

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

1 个答案:

答案 0 :(得分:1)

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

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

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

限制它
AccessControl::GrantOnFile /NOINHERIT "$INSTDIR\WPFUI" "(BU)" "GenericRead + GenericWrite"
AccessControl::DenyOnFile /NOINHERIT "$INSTDIR\WPFUI" "(BU)" "AddFile"
相关问题