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

标签 java windows acl cacls install4j

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

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

但是这仅在操作系统是英语时才有效。对于德国系统,必须是 cacls . /e /t /p Jeder:f .

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

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

有没有办法使用 Windows 命令行工具来完成这项工作?我不得将用于此作业的软件或其他命令行工具与我的软件捆绑在一起。

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

最佳答案

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

关于java - 如果我只知道SID,如何更改Windows中的文件ACL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4389868/

相关文章:

c# - C#中的ACL检查/管理

windows - 从命令行设置证书的读取权限

java - 无法将值 ajax 传递给 servlet

java - Argmax 语句评估 Java

java - SelectItemsConverter Omnifaces 预选对象值?

windows - 检查运行时静态库或 dll 使用的是什么

windows - 如何更改在 Jupyter Notebook 中使用的 Java 版本

java - 使用 gradle 构建 jar

python - 没有名为 'resource' 的模块在 Windows 上安装 Apache Spark

inheritance - Symfony 3-ACL parent /子女关系