我需要使用(在 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/