如何在Java中的主文件夹(或appdata文件夹,用于Windows)中获得写入权限?

时间:2012-11-18 14:19:09

标签: java permissions io

我正在尝试在home / appdata文件夹中保存一些用户设置,但是当我使用dir.canwrite()时它返回false。这是我用来确定home / appdata文件夹的代码:

public static String getAppDataPath() {
    if (System.getProperty("os.name").contains("Windows")) {
        return System.getenv("APPDATA");
    } else {
        return getUnixHome();
    }
}

public static String getUnixHome() {
    String home = System.getProperty("user.home");
    return home != null ? home : "~";
}

这是尝试使用mkdir的代码:

public static boolean checkExistenceDir(String path) {
    File dir = new File(path);
    if(!dir.exists()) {
        dir.mkdir();
    }
}

有问题的路径是:

getAppDataPath() + ".foo" + File.separatorChar

1 个答案:

答案 0 :(得分:1)

您需要以管理员身份启动Java进程。

You can create a run.vbs script in Windows to start your jar

Set oShell = CreateObject("Shell.Application")
oShell.ShellExecute "cmd.exe", , , "runas", 1
oShell.Run "java -jar myjar.jar"

要使程序始终以管理员身份运行,您需要至少以管理员身份运行一次并更新注册表项。