【问题标题】:how to use java native (cacls) for change file permission in windows如何使用java native(cacls)在windows中更改文件权限
【发布时间】:2012-05-05 01:35:39
【问题描述】:

我试过这些语法,但为什么不起作用?

很高兴收到您的建议。

之前谢谢。抱歉英语不好。



package priviledge;

import java.io.File; import java.io.IOException;

/** * * @author DINA */ public class Main {

/** * @param args the command line arguments */ public static void main(String[] args) throws InterruptedException, IOException { File f = new File("C:/lala/images1.jpg"); permission(f); } public static void permission(File src) throws InterruptedException, IOException { // win32 command line variant Process p = Runtime.getRuntime().exec("cacls 000 " + src.getPath()); p.waitFor(); // p.waitFor()

【问题讨论】:

  • 发生了什么?你得到了什么?
  • 我的目的是,这些语法可以将文件权限更改为这些语法上的提及路径。
  • 我什么也没得到。当我在 Windows 资源管理器中检查文件(images1.jpg)时,文件的权限不起作用。

标签: java windows native file-permissions


【解决方案1】:

因为caclschmod 的工作方式不同。特别是,第一个参数是文件名(这意味着您尝试在名为000 的文件上执行此操作)。使用 ACL 的 Windows 使事情进一步复杂化,因为它们不太适合三个八进制数。

查找cacls 的文档(只需在命令提示符处键入)并修复您的命令行。

【讨论】:

  • 我做到了,但是,我无法理解命令提示符中的 cacls 帮助。如果我想更改组的文件权限,我应该在 java 代码中输入什么?
【解决方案2】:

对于 cacls,组与用户相同,例如,要授予 ABC 组完全权限,您可以键入“cacls 文件名 /g ABC:F”您可以查看有关 cacls 文档的更多详细信息

【讨论】:

  • 文件名必须与路径一起完成吗?
  • 是的,作为另一个例子来做cacls C:\lala\images1.jpg /E /g ABC:R你写Runtime.getRuntime().exec("cacls "+src.getPath()+" /E /g ABC:R");
  • 好吧,如果我想让用户名是动态的,我的意思是不输入语法,我该怎么办?
【解决方案3】:

我还在从事一个涉及更改文件夹权限的项目。我尝试了很多方法,但都没有达到我的预期,所以我想出了一个新的想法。为此,您需要有关批处理文件的基本知识,

我想更改文件夹的权限,所以,这就是我所做的:

创建一个文本文件,在该文件中编写命令,将其转换为批处理文件,并使用以下命令执行它:

 File file = new File("server.bat");
    Desktop.getDesktop().open(file);

(适用于 java 1.6 或更高版本),删除了该批处理文件。

这可能是一个很长的路要走,但是在这种方法中可以一次执行任意数量的命令。使用这种方法,您不必担心工作目录,因为您可以在批处理文件中更改它。这可能是个坏主意,我是 java 新手,但我告诉了你我的想法。

【讨论】:

  • 我根本不明白这是如何回答问题的。
猜你喜欢
  • 2016-10-10
  • 2013-12-30
  • 2011-12-30
  • 2018-08-03
  • 2010-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-09
相关资源
最近更新 更多