如何使用 ProcessBuilder 限制目录?

How to restrict directory with ProcessBuilder?

我希望一个进程 write 只能访问一个目录。如果进程试图写入另一个目录,则应加以限制。

我试过directory()方法,但这只能设置默认值。

 ProcessBuilder processBuilder = new ProcessBuilder();
 File allowedDir = new File(System.getProperty("user.home") + "/allowedDirectory/"); 

 // setting allowed directory 
 processBuilder.directory(allowedDir); 

 //expect this to fail 
 processBuilder.command("cmd.exe", "/c", "rmdir /s /q \"C:\Users\restrictedDirectory\restrictedFolder\""); 
        Process process = processBuilder.start();
        int errCode = process.waitFor(); 

然而,我预期会失败的命令有效并删除了 restrictedDirectory 中的文件。如何限制 ProcessBuilder 只允许 write 访问一个目录?

那是不可能的 - ProcessBuilder 只是在您的计算机上执行程序,它不会 运行 它们在沙箱中。

ProcessBuilder#directory(File) 设置进程的工作目录