我们需要在 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 子系统将名称直接传递给内核而无需任何预处理,并且限制不适用。内核仍然有限制,但有点像 65,553 个字符。
所以虽然:
不起作用,您应该找到:
确实有效。如果您使用的是 UNC 名称,则语法为:
注意这仅适用于完全限定名称,即以驱动器号开头。它不适用于 Windows 中的所有命令行应用程序,但它适用于许多应用程序。