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

时间:2010-12-08 16:35:43

标签: java windows acl cacls install4j

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

我知道cacls-command cacls . /e /t /p Everyone:f

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

我知道用户“所有人”(S-1-1-0)的well-known SIDs,但似乎我不能将它们与cacls一起使用。

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

有没有办法使用Windows命令行工具来完成这项工作?我不允许用我的软件捆绑软件或其他命令行工具。

必须从Java-Process调用解决方案,但这应该不是问题。

2 个答案:

答案 0 :(得分:1)

这可能是特定于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

答案 1 :(得分:0)

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

修改

问题解决方案:

设置创建工具Install4j有一个方法getUserLogin(String sid),其返回值类似于:WORKSTATION1\User1

我使用cacls来更改ACL。