我是NSIS命令的新手。我有一个安装程序文件,我在我的InstallDir上授予GenericRead
和GenericWrite
权限。
以下是代码:
AccessControl :: GrantOnFile“$ INSTDIR \ WPFUI”“(BU)”“GenericRead + GenericWrite”
现在的问题是:任何非管理员用户都可以在我的安装目录中复制新文件和dll。
我想设置所需的权限,需要管理员权限才能复制任何新文件。
我已经尝试过与GenericRead + GenericExecute
的运气,但仍然无法正常工作。
有人可以对此嗤之以鼻吗?
如果要安装到$ ProgramFiles这样的公共位置,则不应让普通用户对$ InstDir进行任何类型的写入访问,因为如果同一台计算机上的多个用户正在使用您的程序,则最终会出现问题。还有一些安全问题需要考虑。
正确的解决方案是更改您的应用程序,以便在用户第一次运行您的应用程序时将“模板数据”从$ InstDir复制到$ AppData和/或$ LocalAppData。
如果您不想这样做,那么您需要对更改ACL的方式进行更严格的限制。例如,您可以尝试限制它
AccessControl::GrantOnFile /NOINHERIT "$INSTDIR\WPFUI" "(BU)" "GenericRead + GenericWrite"
AccessControl::DenyOnFile /NOINHERIT "$INSTDIR\WPFUI" "(BU)" "AddFile"