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