我有一个带有NSIS脚本创建的安装程序的C程序。问题是安装程序添加的文件之一只需要读取。对于这个问题,我试图使用AccessControl插件。我在插件目录中包含以下行:
!addplugindir "AccessControl\Unicode\Plugins"
在我的安装部分的底部,我尝试过这些行没有成功:
AccessControl::GrantOnFile "$INSTDIR\file.txt" "BUILTINUSERS" "GenericRead + Delete"
AccessControl::GrantOnFile "$INSTDIR\file.txt" "(BU)" "GenericRead + Delete"
AccessControl::GrantOnFile "$INSTDIR\file.txt" "(S-1-5-32-545)" "GenericRead + Delete"
AccessControl::GrantOnFile "$INSTDIR\file.txt" "(S-1-1-0)" "GenericRead + Delete"
编译脚本时没有显示错误,但在运行安装程序后仍可以写入文件。我从这些来源中找不到任何成功。
http://nsis.sourceforge.net/AccessControl_plug-in
http://avidinsight.uk/2014/01/nsis-access-control-problem-with-built-in-users-group/
How do you set directory permissions in NSIS?
http://nsis.sourceforge.net/Talk:AccessControl_plug-in
最后,我正在使用Windows 8。
答案 0 :(得分:1)
GrantOnFile
将附加到文件的现有ACL,并且永远不会限制任何内容。使用SetOnFile
启动新ACL,或者在您的情况下,使用DenyOnFile
拒绝特定组的访问。
每次调用这些函数后,您还应该Pop
,弹出的字符串将是“ok”或错误消息。