在我的WinForms应用的NSIS安装脚本中,我使用以下CACLS命令为Users组授予子文件夹的完整权限:
Exec 'CACLS "$INSTDIR\SubFolder" /E /T /C /G "Users":F'
因此实际执行的CACLS命令类似于:
CACLS "c:\Program Files\MyApp\SubFolder" /E /T /C /G "Users":F
当我在Windows资源管理器中查看文件夹权限(右键单击该文件夹并选择“属性”,转到“安全”选项卡)时,会出现正确的权限,但它们是不可编辑的。
此外,单击“高级安全性设置”的“高级”按钮显示SubFolder从“父对象”继承“用户”组权限,但该父对象是什么,因为它不是上面的文件夹。
为什么CACLS添加的权限是不可编辑的,为什么它们是从不存在的父对象继承的?我想我可能在CACLS上设置了错误的选项。
我在Windows XP上。
答案 0 :(得分:3)
我想我明白了:改变CACLS使用/ P'替换'而不是/ G'授权'似乎更好:
CACLS "c:\Program Files\MyApp\SubFolder" /E /T /C /P "Users":F
然后可以在Windows资源管理器的“安全”选项卡中编辑创建的选项。
答案 1 :(得分:2)
NSIS有plugin来设置权限,您应该使用它(我不记得XP Home是否有cacls
)
“Users”的继承权限必须来自某个地方,无论是驱动器的根目录还是父文件夹的父目录(高级安全对话框应该从列表中继承列)