CACLS Путаница

Во время сценария установки NSIS для приложения WinForms я использую следующую команду 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.

2 ответа

Решение

Я думаю, я понял: изменение CACLS для использования /P 'replace' вместо /G 'grant', похоже, работает лучше:

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

Затем созданные параметры можно редактировать на вкладке "Безопасность" в проводнике Windows.

NSIS имеет плагин для установки разрешений, вы, вероятно, должны использовать его (я не помню, если XP Home даже имеет cacls)

Унаследованное разрешение для "Пользователей" должно исходить откуда-то явно, либо из корня диска, либо из родительской папки вашей родительской папки (диалоговое окно расширенной безопасности должно иметь в списке унаследованный столбец from)

Другие вопросы по тегам