2

在我的 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 资源管理器中查看文件夹权限时(右键单击文件夹并选择属性,转到安全选项卡),正确的权限在那里,但它们是不可编辑的。

此外,单击“高级安全设置”的高级按钮显示子文件夹正在从“父对象”继承“用户”组权限,但该父对象是什么,因为它不是上面的文件夹。

为什么 CACLS 添加的权限是不可编辑的,为什么它们是从不存在的父对象继承的?我想我可能在 CACLS 上设置了错误的选项。

我在 Windows XP 上。

4

2 回答 2

3

我想我想通了:将 CACLS 更改为使用 /P 'replace' 而不是 /G 'grant' 似乎效果更好:

CACLS "c:\Program Files\MyApp\SubFolder" /E /T /C /P "Users":F

然后可以在 Windows 资源管理器的“安全”选项卡中编辑创建的选项。

于 2010-06-09T09:24:36.803 回答
2

NSIS 有一个插件来设置权限,你可能应该使用它(我不记得 XP Home 是否有cacls

“用户”的继承权限必须清楚地来自某个地方,无论是驱动器的根目录还是父文件夹的父文件夹(高级安全对话框应该在列表中具有继承自列)

于 2010-06-08T19:05:58.560 回答