Cacls, Windows 7, полные права, локальные имена - PullRequest
3 голосов
/ 02 февраля 2012

Мне нужно предоставить полный доступ к папке, используя (не рекомендуется в Win7) Cacls. Мне кажется, что я должен использовать cacls локализованные имена пользователей и групповые имена. E.g.:

cacls foldername /T /E /C /G Users:F

Это дало мне ошибку "Не было сопоставлено имя учетной записи и идентификаторы безопасности". А следующая команда отлично работает (пользователи на русском языке = Пользователи).

cacls foldername /T /E /C /G Пользователи:F

Как я могу предоставить полные права на папку независимо от языка системы?

1 Ответ

4 голосов
/ 02 февраля 2012

Используйте xcacls вместо того, как описано здесь и используйте SID вместо имен (вы найдете хорошо известные sids здесь )

Если вы по какой-то причине застряли с cacls, то google: cacls sid принесет вам некоторые обходные пути, как сделать обратное отображение от sid к имени, а затем передать это cacls

Редактировать: не удержался, чтобы выучить несколько новых трюков ... этот простой скрипт даст вам фактическое имя группы «Пользователи» (S-1-5-32-545) на данном ПК:

    Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
    Set objAccount = objWMIService.Get ("Win32_SID.SID='S-1-5-32-545'")
    Wscript.Echo objAccount.AccountName

Поместите его в файл с расширением vbs (предположим, usersName.vbs).

Теперь запустите:

echo Y|for /f "delims=" %i in ('cscript -Nologo usersName.vbs') do cacls foldername /G "%i":F

Готово: -)

Редактировать: исправлено, если в имени есть пробел (добавлено delims=). Также обратите внимание, что эхо Y в начале работает, если вы используете английскую версию инструмента .

...