batch-file - Cacls、Windows 7、完全权限、本地名称

标签 batch-file cacls

我需要使用(在 win7 上已弃用)Cacls 授予对文件夹的完全访问权限。在我看来,我必须使用 cacls 本地化的用户名和组名。例如:

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

这给了我错误“没有完成帐户名和安全 ID 之间的映射”。下一个命令工作正常(俄语用户 = Пользователи)。

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

如何在不考虑系统语言的情况下授予对文件夹的完全权限?

最佳答案

按照描述使用 xcacls here并使用 SID 而不是名称(你会发现众所周知的 sids here )

如果您出于某种原因受困于 cacls,那么 google: cacls sid 将为您提供一些变通方法,如何进行从 sid 到 name 的反向映射,然后将其提供给 cacls

编辑:忍不住要学习一些新技巧…… 这个简单的脚本将为您提供给定 PC 上“用户”(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=)。另请注意,开头的 echo Y 如果您使用该工具的英文版则有效

关于batch-file - Cacls、Windows 7、完全权限、本地名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9113206/

相关文章:

windows - (这时候出乎意料

mysql - 批处理文件 "Pressing"自动进入

windows - 如何在批处理文件中组合数字和字符串

batch-file - 我如何只回显空白而不回显换行符

c# - 如何在 C# Windows 服务中使用 CACLS

windows-server-2003 - (Windows Server 2003) CACLS.EXE 用法

batch-file - icacls 拒绝所有人目录删除权限

c - 用于更新文件的批处理文件脚本

command-line - 更改文件夹的所有者和权限