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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用NSIS授予安装目录的权限?相关的知识,希望对你有一定的参考价值。

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

以下是代码:

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

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

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

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

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

答案

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

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

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

AccessControl::GrantOnFile /NOINHERIT "$INSTDIRWPFUI" "(BU)" "GenericRead + GenericWrite"
AccessControl::DenyOnFile /NOINHERIT "$INSTDIRWPFUI" "(BU)" "AddFile"

以上是关于如何使用NSIS授予安装目录的权限?的主要内容,如果未能解决你的问题,请参考以下文章

您如何使用 NSIS 请求管理员权限?

根据安装程序的 NSIS 卸载程序权限

NSIS打包 文件夹权限 --- AccessControl

如何授予 PHP 对目录的写入权限?

NSIS目录

新建站点如何修改目录权限?添加www用户组?