如何在NSIS中设置目录权限?
时间:2020-03-06 14:33:30 来源:igfitidea点击:
我正在尝试使用需要管理员安装的Nullsoft安装系统来构建Windows安装程序。安装程序将创建一个"日志"目录。由于普通用户可以运行此应用程序,因此该目录需要普通用户可写。如何指定所有用户都应具有以NSIS脚本语言对该目录进行写访问的权限?
我承认这听起来像是一个坏主意,但该应用程序只是一个内部应用程序,专用网络上只有少数人使用。我只需要保存日志文件,这样我就可以查看如果发生不良情况,为什么该应用程序损坏了。无法将用户设为管理员。
解决方案
一种方法:调用外壳,然后使用cacls
或者xcacls
。
为什么不在用户的%APPDATA%目录中创建日志目录?我们是否真的需要将所有日志放在安装目录中?为什么?
使用AccessControl插件,然后将其添加到脚本中,该脚本的" logs"目录位于安装目录中。
AccessControl::GrantOnFile "$INSTDIR\logs" "(BU)" "FullAccess"
这样,所有用户都可以完全访问该文件夹。
为什么不将日志放在所有用户可写的位置,而不是更改"程序文件"下目录的权限。
请参阅NSIS文档中的4.9.7.7 SetShellVarContext部分。我们可以将其与$ APPDATA一起使用,以获取可用于所有用户的应用程序数据文件夹。
在Windows Server 2008计算机上,AccessControl :: GrantOnFile" <文件夹>""(BU)"" FullAccess"
对我不起作用。相反,我不得不使用这个:
`AccessControl :: GrantOnFile" <文件夹>""((S-1-5-32-545)""完全访问"
根据http://support.microsoft.com/default.aspx?scid=kb;EN-US;Q243330,S-1-5-32-545等效于"用户"