如何更改Windows中的文件ACL,如果我只知道SID?

我想更改一个文件的ACL并将“完全权限”设置为特殊用户。

我知道cacls命令cacls . /e /t /p Everyone:f cacls . /e /t /p Everyone:f

但是这只适用于操作系统是英文的。 对于德国的系统,它必须是cacls . /e /t /p Jeder:f cacls . /e /t /p Jeder:f

我知道用户“大家”(S-1-1-0) 的众所周知的SID ,但似乎我不能用cacls来使用它们。

我试过cacls . /e /t /p S-1-1-0:f cacls . /e /t /p S-1-1-0:f

有没有办法使用Windows命令行工具进行这项工作? 我不允许将软件或其他命令行工具与我的软件捆绑在一起。

解决scheme必须从Java进程调用,但这不应该是一个问题。

Solutions Collecting From Web of "如何更改Windows中的文件ACL,如果我只知道SID?"

这可能是Windows版本特定的,但看看

  whoami /groups 

并解析结果。 在Windows 7上,这个

  whoami /groups | find "S-1-1-0" 

看起来像这样对我

 C:\>whoami /groups | find "S-1-1-0" Everyone Well-known group S-1-1-0 Mandatory group, Enabled by default, Enabled group 

有一个完整的Win32 API来获取这个。 这里有一个使用C#的解决方案

http://www.ms-news.net/f2438/setpermission-everyone-c-4997971.html

我找到了解决方案。 我正在使用我的安装程序创建工具的供应商库。

编辑:

问题的解决方案:

设置创建工具Install4j有一个方法getUserLogin(String sid)它的返回值是这样的: WORKSTATION1\User1

我用cacls来改变ACL。