2012-04-24 53 views
0

我曾试图这些语法更改文件的权限,但它为什么没有工作?如何使用Java本机(CACLS)在Windows

你的建议,我真的很高兴。

感谢之前。对不起英语不好。

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()
+1

发生了什么事?你得到了什么? – MByD 2012-04-24 12:09:12

+0

我的目的是,这些语法可以将文件权限更改为这些语法中的提及路径。 – 2012-04-24 12:20:12

+0

我什么也没得到。当我在Windows资源管理器中检查文件(images1.jpg)时,该文件的权限不起作用。 – 2012-04-24 12:22:15

回答

1

因为cacls作品不同于chmod。特别是,第一个参数是文件名(这意味着您可以在名为000的文件上尝试这样做)。使用ACL的Windows进一步说明了一些事情,因为它们不适合三个八进制数。

查找的cacls文档(只要在命令提示符下键入)解决您的命令行。

+0

我做到了,但是,我无法理解cacls在commandprompt中的帮助。如果我想更改组的文件权限,应该在java代码中输入什么内容? – 2012-04-24 12:28:05

1

为CACLS一组相同的用户例如要授予完全权限的ABC组您可以键入“CACLS文件名/ g的ABC:F”可以CACLS的文档上查看更多详细信息

+0

文件名必须以其路径完成? – 2012-04-26 09:51:11

+0

是作为另一个例子做'CACLS C:\拉拉\ images1.jpg/E/G ABC:R'你写的'调用Runtime.getRuntime()EXEC(“CACLS ”+ src.getPath()+“/ E/g ABC:R“);' – msam 2012-04-26 10:55:09

+0

好吧,我会试试看。谢谢。 – 2012-05-01 11:56:13

0

我也在研究一个涉及文件夹权限更改的项目。我尝试了很多方法,但没有像我期待的那样工作,所以我想出了一个新的想法。对于您需要有关批处理文件的基本知识,

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

创建一个文本文件,在该文件中写的命令,将其转换成

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

(工程为Java 1.6或更高版本),删除该批处理文件:一个批处理文件,以及使用执行它。

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

+0

我不明白这是如何回答Q的。 – xlm 2015-09-19 01:59:42