【发布时间】:2019-09-21 16:36:44
【问题描述】:
如何为使用 NSIS 语言的所有用户授予对目录1 及其所有子目录的完全访问权限(读/写/删除)?我见过this 和所有类似的答案。他们都建议这样做:
AccessControl::GrantOnFile "$APPDATA\${APP_NAME}" "(S-1-5-32-545)" "FullAccess"
我做到了,但在"$APPDATA\${APP_NAME}" 创建的文件仍然无法被创建者以外的用户访问(无法读取/修改/删除)。没有一个文件可以修改,有些甚至无法读取。我在 Windows 7 64 位。我究竟做错了什么?我也试过用"(BU)" 代替"(S-1-5-32-545)" 和"GenericRead + GenericWrite" 代替"FullAccess"。都没有帮助。
我正在使用SetShellVarContext all,执行安装程序后,权限如下所示:
我的主要目标是存储所有用户都必须阅读和修改的文件。如果有更好的方法来做到这一点,而不是存储在"C:/ProgramData/MyApplication/" 并授予所有用户权限,那也会很有用。
1目录是"$APPDATA\${APP_NAME}",也就是C:/ProgramData/MyApplication/
【问题讨论】:
-
您能否确认您使用的是
SetShellVarContext all。授予后您是否在资源管理器中检查了目录的安全性? -
@Anders 是的,我正在使用
SetShellVarContext all,并且在执行安装程序后,所有用户的权限是“完全控制”、“修改”、“写入”,但不是“读取”等其他用户"或"读取和执行"、"列出文件夹内容"、"特殊权限" -
@Anders 添加了显示安全属性的屏幕截图
标签: windows permissions windows-installer installation nsis