如何使用Java 7的File API设置Windows ACL,使其模仿添加用户/组和以下选项:
例如,在“操作系统属性”对话框中,您可以选择以下基本写访问权限:
- ☑修改
- ☑读取并执行(自动选择)
- ☑列出文件夹内容(自动选择)
- ☑读取(自动选择)
- ☑写入(自动选择)
但是,当我使用Java 7的File API使用类似的选项时,它会选择:
- ☑特别
- ☑高级(不要编辑,单击用户或组,查看)
- 显示高级权限
- 高级权限
- ☑(多行复选框)
- ☑高级(不要编辑,单击用户或组,查看)
这不仅难以管理(遍历对话框更容易错过某些内容),而且其行为与单击这些框不同。一些UAC提示的行为有所不同。更糟糕的是,由于遍历对话框,很难切换权限(例如,从Windows桌面),从而留出更多出错的机会。
如何使用Java设置这些复选框?
UserPrincipal authenticatedUsers = path.getFileSystem().getUserPrincipalLookupService()
.lookupPrincipalByName("Authenticated Users");
AclFileAttributeView view = Files.getFileAttributeView(path,AclFileAttributeView.class);
// Create ACL to give "Authenticated Users" "modify" access
AclEntry entry = AclEntry.newBuilder()
.setType(AclEntryType.ALLOW)
.setPrincipal(authenticatedUsers)
.setPermissions(DELETE,DELETE_CHILD,LIST_DIRECTORY,READ_DATA,READ_ATTRIBUTES,ADD_FILE,WRITE_DATA,WRITE_ATTRIBUTES)
.build();
List<AclEntry> acl = view.getacl();
acl.add(0,entry); // insert before any DENY entries
view.setacl(acl);