CACLS混乱

时间:2010-06-08 17:42:58

标签: windows nsis file-permissions cacls

在我的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上。

2 个答案:

答案 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”的继承权限必须来自某个地方,无论是驱动器的根目录还是父文件夹的父目录(高级安全对话框应该从列表中继承列)