gpt4 book ai didi

java - mkdirs 在 Windows 7 中不工作

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:15:02 24 4
gpt4 key购买 nike

我制作了一个小型 Java 应用程序,可将目录从 CD 复制到 HD。我使用 Windows Vista 制作了该程序并且它可以运行,但是当我在 Windows 7 中运行它时,它失败了。

主要问题是需要在 Program Files 文件夹中创建一个文件夹。

我使用了 DestinationFolder.mkdirs(),但创建失败

这是java代码:

public void Install_App()
{
File srcFolder = new File(System.getProperty("user.dir") + "\\WINDOWS");
File destFolder = new File("C:\\Program Files\\test1\\test2\\");
if (srcFolder.exists())
{
try{
if(!destFolder.exists())
{
destFolder.mkdirs();
}
copyFolder(srcFolder,destFolder,1);
}catch(IOException e){
e.printStackTrace();
JOptionPane.showMessageDialog(null, e.toString());
error=true;
System.exit(0);
}
} else
{
JOptionPane.showMessageDialog(null, "Error. Source Directory doesn't exist.");
error=true;
};
}

...然后有一个 copyfolder 函数,它使用输入流和输出流复制文件。

问题是从未创建该文件夹。我的登录用户是管理员。正如我所说,它在 Vista 中有效。

你能帮帮我吗?

谢谢。

问题是我用 java 创建了这个应用程序以在 Windows 和 Mac 上运行它。在 Windows 中,它应该像这样自动运行和 autorun.inf:

[autorun]
OPEN=java_app.bat

然后这个 bat 将运行这个:

@echo off
start javaw -jar "java_app.jar"
EXIT

那么我如何修改它以自动以管理员身份运行它呢?这个 Java 应用程序的主要思想是简化安装和使用外部应用程序的过程,无论您使用的是哪种操作系统。如果我必须要求用户以管理员身份运行它,它就会失去意义(使用起来很简单)。

最佳答案

我猜您正在以普通用户身份运行代码。

默认情况下,UAC 阻止以普通用户身份写入 Program Files 目录在 Windows 7 下。这就是您的 Java 代码无法创建目录的原因。

尝试从特权 shell 运行您的 Java 代码。您可以通过 开始 > [键入 cmd] > [右键单击“cmd.exe”并选择“以管理员身份运行”]。现在,在管理员命令提示符下使用 java -jarjava -classpath 运行编译后的代码。它现在应该可以工作了。

自动化 UAC 提示:

您需要按照 [ 1 中的详细描述创建一个 list 文件。 ] 和 [ 2 ] 让 Windows/UAC 知道您的程序需要提升权限。

同时检查这个 [ 3 ] 名为 elevate 的实用程序,它会在处理 UAC 权限请求时将您的程序生成为子进程,所有这些请求都是从父 (elevate) 程序本身发出的。

[1] [http://msdn.microsoft.com/en-us/library/aa511445.aspx][2] 
[2] [http://msdn.microsoft.com/en-us/library/bb756929.aspx][3]
[3] [http://www.wintellect.com/cs/blogs/jrobbins/archive/2007/03/27/elevate-a-process-at-the-command-line-in-vista.aspx][4]

关于java - mkdirs 在 Windows 7 中不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8257765/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com