Нам необходимо установить разрешения для пользовательских каталогов на Windows 2000 Server. Это происходит достаточно регулярно, и они также должны быть установлены в указанном ниже порядке, иначе резервные копии выйдут из строя. Это базовый сценарий:
XCACLS foldername /g Administrators:OF /T /C /Y
XCACLS foldername /E /g "DOM\Enterprise Admins":OF /T /C /Y
XCACLS foldername /E /g SYSTEM:OF /T /C /Y
XCACLS foldername /E /g STAFF\username:ORWEDC /T /C /Y
Моя проблема в том, что этот сценарий не работает со всеми файлами в некоторых каталогах. Кажется, что это файлы с длинными именами и глубоко вложенными каталогами.
Кто-нибудь знает сценарий, который не возражает против длинных имен файлов и проходит большие пути?
Мне попался сценарий XCACLS.vbs от Microsoft, но он работает по-другому, и я не уверен, работает ли он и с такими большими именами файлов.
Ограничение длины имен файлов составляет около 260 символов, однако есть хитрый и хитрый способ обойти это :-)
Ограничение находится в подсистеме Win32, а не в ядре. Если вы добавите к имени файла префикс \? \, Это заставит подсистему Win32 передать имя непосредственно ядру без какой-либо предварительной обработки, и ограничение не применяется. У ядра все еще есть ограничение, но это что-то глупое, вроде 65 553 символа.
Так что пока:
xcacls C:\verylongname.txt
не работает, вы должны найти:
xcacls \\?\C:\verylongname.txt
работает. Если вы используете имя UNC, синтаксис следующий:
xcacls \\?\UNC\server\share\verylongname.txt
NB, это работает только с полными именами, то есть начинающимися с буквы диска. Он не работает со всеми приложениями командной строки в Windows, но работает со многими.