在WinForms应用程序的NSIS安装脚本期间,我使用以下CACLS命令向用户组授予对子文件夹的完全权限:
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。
发布于 2010-06-09 17:24:37
我想我弄明白了:将CACLS改为使用/P 'replace‘而不是/G 'grant’似乎效果更好:
CACLS "c:\Program Files\MyApp\SubFolder" /E /T /C /P "Users":F然后,可以在Windows资源管理器的“安全”选项卡中编辑创建的选项。
发布于 2010-06-09 03:05:59
NSIS有一个用于设置权限的plugin,你可能应该使用它(我甚至不记得XP Home是否有cacls)
“用户”的继承权限必须明确来自某个地方,要么是驱动器的根目录,要么是父文件夹的父文件夹(高级安全对话框应该在列表中有一个继承自列)。
https://stackoverflow.com/questions/2999807
复制相似问题