在Vista上使用管理员权限启动Java运行时进程

在Vista上使用管理员权限启动Java运行时进程,java,windows-vista,process,runtime,privileges,Java,Windows Vista,Process,Runtime,Privileges,我想执行一个setup.exe安装程序,在vista上用java 1.6安装软件 该用户不是管理员。当我尝试启动进程时,会收到错误消息: CreateProcess error=740 这表示用户没有足够的权限启动进程 我是否可以提交一个标志或一个选项来指示流程应该以管理员权限执行?Vista本身在菜单工具栏中具有此功能。我可以在Java中使用这个函数吗 我调用以下代码 Runtime rt = Runtime.getRuntime(); Process pro

我想执行一个setup.exe安装程序,在vista上用java 1.6安装软件

该用户不是管理员。当我尝试启动进程时,会收到错误消息:

CreateProcess error=740
这表示用户没有足够的权限启动进程

我是否可以提交一个标志或一个选项来指示流程应该以管理员权限执行?Vista本身在菜单工具栏中具有此功能。我可以在Java中使用这个函数吗

我调用以下代码

        Runtime rt = Runtime.getRuntime();
        Process process;
        try {
            String fileToExecute = new File(mFolder, mSetupFiles[0]).getCanonicalPath();

            if (logger.isDebugEnabled()) {
                logger.debug("Execute runtime process");
            }
            process = rt.exec(fileToExecute, null, mFolder);

            process.getErrorStream().close();
            process.getInputStream().close();
            process.getOutputStream().close();

            if (logger.isDebugEnabled()) {
                logger.debug("Wait until process is finished");
            }
            process.waitFor();
        } catch (IOException e) {
            throw new StartException(e);
        } catch (InterruptedException e) {
            throw new StartException(e);
        }
(我没有尝试过),但似乎您可以使用


也请阅读UAC概述

经过2天的测试,我发现了以下解决方案

激活Vista UAC功能时会出现错误。每当流程需要管理员权限时,UAC都会显示一个问题对话框

显示此对话框会导致问题

而不是使用旧的

process = rt.exec(fileToExecute, null, mFolder);
命令,我现在使用新的1.5命令

编辑:

为了避免这个问题,您必须打开一个请求权限的命令窗口。然后你必须调用外部进程

ProcessBuilder builder = new ProcessBuilder(new String[] { "cmd.exe", "/C", fileToExecute });

这里也描述了

如果我在这方面有错误,请纠正我,但您似乎在寻求一种方法,允许“setup.exe”安装程序覆盖操作系统并授予自己管理权限!当然,我可能会误解,但这听起来很危险。我想知道的是,Vista在打开具有权限的文件之前/期间需要管理员用户名/密码时,会询问管理员用户名/密码。是的,我明白了,这样会更好。Vista要求输入用户名和密码,然后继续执行。