Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java mkdirs在windows 7中不工作_Java_Mkdirs - Fatal编程技术网

Java mkdirs在windows 7中不工作

Java mkdirs在windows 7中不工作,java,mkdirs,Java,Mkdirs,我制作了一个小型java应用程序,可以将目录从CD复制到HD。我使用WindowsVista制作了这个程序,它运行正常,但当我在Windows7中运行它时,它失败了 主要问题是需要在Program Files文件夹中创建一个文件夹 我使用了DestinationFolder.mkdirs(),但它无法创建它 这是java代码: public void Install_App() { File srcFolder = new File(System.getProperty("user.di

我制作了一个小型java应用程序,可以将目录从CD复制到HD。我使用WindowsVista制作了这个程序,它运行正常,但当我在Windows7中运行它时,它失败了

主要问题是需要在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函数,它使用inputstream和outputstream复制文件

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

你能帮帮我吗

谢谢


问题是,我用java创建这个应用程序是为了在Windows和Mac上运行它。 在Windows中,它应该使用和autorun.inf自动运行,如下所示:

[autorun]
OPEN=java_app.bat
然后,该蝙蝠将运行以下命令:

@echo off
start javaw -jar "java_app.jar"
EXIT
那么,我如何修改它以管理员身份自动运行它呢?
这个java应用程序的主要思想是简化安装和使用外部应用程序的过程,无论您使用的是哪个操作系统。如果我不得不要求用户以管理员的身份运行它,它将失去它的意义(使用简单)。

我猜您是以普通用户的身份运行代码

默认情况下,Windows 7会阻止以普通用户身份写入
程序文件
目录。这就是Java代码无法创建目录的原因

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

自动执行UAC提示:

您需要按照[]和[]中的详细说明创建清单文件,以便让Windows/UAC知道您的程序将需要提升的权限

还要检查名为
提升
的[]实用程序,该实用程序在处理UAC权限请求时会将您的程序生成为子进程,所有请求都是从父(
提升
)程序本身发出的

[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代码没有问题。我试图使用命令行创建文件夹,但被拒绝访问

所以,解决方案是在其他位置创建文件夹还是以管理员身份运行。正如@Alex K.aready所说的,请参阅本文了解如何获得此类权限


您没有在
程序文件中创建目录的适当权限。您必须以管理权限启动应用程序

需要了解的一件重要事情是,在开发应用程序时,决不能编写它们来保存/修改程序文件中的数据;相反,他们应该向我们的
我的文档
写入
AppData


从Windows Vista开始,甚至更早,修改
程序文件中的文件就遭到了严重的反对。你应该从一开始就尝试遵循这条规则,否则如果你想在线发布整个应用程序,重写它意味着麻烦。

UAC说不!,我用java创建了这个应用程序,在Windows和Mac上运行。在Windows中,它应该使用和autorun.inf自动运行,如下所示:谢谢您的回答。我在我的原始问题上添加了一些注释,只是为了解释我为什么需要它。@user897013:您需要创建一个清单文件,如[1]和[2]所述,以让Windows/UAC知道您的程序需要提升的权限。[1] [2]@user897013:还要检查名为
elevate
的[1]实用程序,该实用程序在处理
UAC
权限请求时,会将您的程序生成为子进程,所有请求都是从父(
elevate
)程序本身发出的。[1] 谢谢您的帮助,但是您确定可以在Java中使用此代码吗?它看起来更像是一个代码VB@Stamted谢谢您的回答,但应用程序必须安装在Program Files文件夹中的已知文件夹中。
C:\Users\alexr>mkdir "C:\Program Files\mytest"
Access is denied.