使用XCACLS设置具有长文件名的权限

我们需要在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 

我的问题是,这个脚本不适用于某些目录中的所有文件。 它似乎失败的文件是长文件名和深层嵌套的目录。

有谁知道一个脚本,不介意长文件名,并在其大步走大路?

我遇到了来自Microsoft的XCACLS.vbs脚本,但它的工作方式不同,我不确定它是否也适用于这些大文件名。

在文件名的长度上有大约260个字符的限制,但有一个非常狡猾和偷偷摸摸的方式来绕过这个:-)

Win32子系统中的限制不在内核中。 如果用\?\前缀文件名,则会导致Win32子系统将该名称直接传递给内核而不进行任何预处理,并且该限制不适用。 内核仍然有一个限制,但是它很像65553个字符。

所以当:

 xcacls C:\verylongname.txt 

不工作,你应该find:

 xcacls \\?\C:\verylongname.txt 

确实有效 如果您使用的是UNC名称,则语法是:

 xcacls \\?\UNC\server\share\verylongname.txt 

NB这只适用于完全合格的名字,即从一个驱动器号开始。 它不适用于Windows中的所有命令行应用程序,但它可以与许多工作。