NSIS访问控制只读

时间:2016-06-14 13:29:36

标签: nsis

我有一个带有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。

1 个答案:

答案 0 :(得分:1)

GrantOnFile将附加到文件的现有ACL,并且永远不会限制任何内容。使用SetOnFile启动新ACL,或者在您的情况下,使用DenyOnFile拒绝特定组的访问。

每次调用这些函数后,您还应该Pop,弹出的字符串将是“ok”或错误消息。