我尝试使用Java中的AclEntry.add()方法在Windows 10上向用户添加给定文件的读取权限,该过程正常运行。但是,在Windows中不会发生此更改。我想知道此方法是应该永久分配权限还是仅在程序执行期间分配权限。
注意:我正在使用Nio.File包的AclFileAttributeView接口。另外,我使用Launch4j打包了这个jar,以便能够以管理员身份运行它。
在我正在使用的代码下面。
import java.io.IOException;
import java.nio.file.FileSystems;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.attribute.*;
import java.util.List;
public class Inicial {
public Inicial() throws IOException {
Path path = Paths.get("C:\\Windows\\System32\\config\\journal");
UserPrincipal usercop =
FileSystems.getDefault().getUserPrincipalLookupService().lookupPrincipalByName("Gilderlei");
AclFileAttributeView aclFileAttributeView = Files.getFileAttributeView(path,
AclFileAttributeView.class);
List<AclEntry> aclEntries = aclFileAttributeView.getAcl();
AclEntry.Builder aclEntry = AclEntry.newBuilder()
.setType(AclEntryType.ALLOW)
.setPrincipal(usercop)
.setPermissions(AclEntryPermission.READ_DATA);
AclEntry entry = aclEntry.build();
aclEntries.clear();
aclEntries.add(entry);
}
public static void main(String[] args) throws IOException {
new Inicial();
}
}
我没有在Java Page上找到任何信息,但是我可以告诉你:
addPermission(Permission permission)
看上去很相似,似乎也做同样的事情,只是将其添加到特定的ACl条目中。 该网站上的说明说:“将指定的权限添加到此ACL条目。” 这可能只是暂时的,可能需要一些更深层次的行动方法。希望这会有所帮助。