当前位置:  开发笔记 > 开发工具 > 正文

如何在NSIS中设置目录权限?

如何解决《如何在NSIS中设置目录权限?》经验,为你挑选了4个好方法。

我正在尝试使用需要管理员安装的Nullsoft安装系统来构建Windows安装程序.安装程序创建一个"logs"目录.由于普通用户可以运行此应用程序,因此普通用户需要该目录可写.如何指定所有用户都应具有以NSIS脚本语言对该目录具有写访问权限的权限?

我承认这听起来像是一个坏主意,但应用程序只是一个内部应用程序,只有少数人在专用网络上使用.我只需要保存日志文件,以便我可以看到如果发生了不好的事情,应用程序会被破坏的原因.用户无法成为管理员.



1> Jay R...:

使用AccessControl插件,然后将其添加到脚本中,其中"logs"目录位于安装目录中.

AccessControl::GrantOnFile "$INSTDIR\logs" "(BU)" "FullAccess"

这样就可以完全访问所有用户的文件夹.



2> 小智..:

AccessControl::GrantOnFile "" "(BU)" "FullAccess"在Windows Server 2008计算机上对我不起作用.相反,我不得不使用这个:

AccessControl::GrantOnFile "" "(S-1-5-32-545)" "FullAccess"

根据http://support.microsoft.com/default.aspx?scid=kb;EN-US;Q243330,S-1-5-32-545等同于"用户"



3> Sam Hasler..:

为什么不将日志放在所有用户都可写的位置,而不是更改Program Files下目录的权限.

请参阅NSIS文档中的4.9.7.7 SetShellVarContext部分.您可以将它与$ APPDATA一起使用,以获取可供所有用户编写的应用程序数据文件夹.



4> 小智..:

现在这是一个老问题,但正如SörenAPPDATA目录所建议的那样,做一个你想要的好方法,就是:不要拿用户的个人APPDATA而是"所有用户"APPDATA目录!这样任何人都可以访问日志文件;-)

另外,我在某处读到在GrantOnFile上使用(BU)与某些系统不兼容(如果我记得很好的话,Win 7 x64),也许你应该使用SID"(S-1-5-32-545)"代替(这是所有用户的SID,此值是每个Windows操作系统上的常量)

推荐阅读
勤奋的瞌睡猪_715
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有