如何在NSIS设置目录权限?(How do you set directory permission

2019-06-26 14:25发布

我试图建立使用Nullsoft的安装系统,该系统由管理员需要安装一个Windows安装程序。 该安装程序做了“日志”目录。 由于普通用户可以运行此应用程序,该目录必须是由普通用户可写的。 如何指定所有用户应该有权拥有的NSIS脚本语言对该目录的写访问?

我承认,这听起来像一种坏主意,但应用程序是在专用网络上使用的只有几个人只是一个内部应用程序。 我只需要保存,这样我可以看到为什么如果有什么不好的事情发生在应用程序被破坏的日志文件。 该用户不能进行管理员。

Answer 1:

使用AccessControl的插件,然后添加这剧本,其中“日志”目录在安装目录。

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

这给了完全访问该文件夹的所有用户。



Answer 2:

AccessControl::GrantOnFile "<folder>" "(BU)" "FullAccess"并没有为我在Windows Server 2008机器上工作。 相反,我只好用这一个:

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

S-1-5-32-545是equivalente到“用户”根据http://support.microsoft.com/default.aspx?scid=kb;EN-US;Q243330



Answer 3:

相反,在改变在Program Files目录的权限,为什么不把这些日志中是由所有用户可写的位置。

请参阅您的NSIS文档中的4.9.7.7 SetShellVarContext部分。 你可以用它来与$ APPDATA获得是可写的所有用户的应用程序数据文件夹。



Answer 4:

这是现在一个老问题,但索伦APPDATA作为建议的目录是一个很好的方式做你想要什么,事情是:不要把用户的personnal APPDATA但“所有用户” APPDATA目录! 这样,任何人都可以访问日志文件;-)

另外,我读的地方,在使用GrantOnFile(BU)(如果我记得很清楚的Win 7 64位)不与某些系统运作良好,也许你应该使用SID“(S-1-5-32-545)”,而不是(它是所有用户的SID,这个值是一个常数可以在每台Windows OS)



Answer 5:

方式一:拨打外壳,并使用caclsxcacls



Answer 6:

为什么不创建在用户的%APPDATA%目录下的日志目录? 你真的需要把所有的日志在安装目录? 为什么?



文章来源: How do you set directory permissions in NSIS?