【问题标题】:The exe doesn't runexe不运行
【发布时间】:2011-08-18 12:31:56
【问题描述】:

我使用以下 Java 代码将文件从一个目录移动到另一个目录,然后在目标目录中执行文件。我的代码是

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.IOException;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFileChooser;
import javax.swing.JFrame;


import org.apache.commons.io.FileUtils;
public class JFileChooserTest {
  public static void main(String[] args) {
        String filelocation="C:\\Users\\FSSD\\Desktop\\OutPut\\Target";
        File trgDir = new File(filelocation);
        System.err
                .println("file location>>>>>>>>>>>>>>>>>>>"
                        + filelocation);
        File desDir = new File(
                "C:\\Users\\FSSD\\IndigoWorkSpace\\Swing\\test");

        try {
            FileUtils.copyDirectory(trgDir, desDir);
            // FileUtils.copyDirectory(srcDir, trgDir);
        } catch (IOException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }

        Runtime rt=Runtime.getRuntime();
        try {
            Process p=rt.exec("test\\setup.exe");
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
  }
}

当我执行此代码时,我执行此代码已成功移动文件,但出现以下错误。

java.io.IOException: Cannot run program "test\setup.exe": CreateProcess error=740, The requested operation requires elevation
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:460)
    at java.lang.Runtime.exec(Runtime.java:593)
    at java.lang.Runtime.exec(Runtime.java:431)
    at java.lang.Runtime.exec(Runtime.java:328)
    at JFileChooserTest.main(JFileChooserTest.java:34)
Caused by: java.io.IOException: CreateProcess error=740, The requested operation requires elevation
    at java.lang.ProcessImpl.create(Native Method)
    at java.lang.ProcessImpl.<init>(ProcessImpl.java:81)
    at java.lang.ProcessImpl.start(ProcessImpl.java:30)
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:453)
    ... 4 more

这里我使用了“setup.exe”。它是一个可执行文件。当我在运行时执行时,出现上述错误。为什么会发生,是否有可能解决它。提前谢谢..

【问题讨论】:

  • 这个可执行文件需要管理员权限才能运行,你的java应用应该以管理员身份运行才能执行它。
  • Windows 7/Vista 和 UAC?
  • @Maurício Linhares:如果可以通过代码授予管理员权限,我正在使用 Windows 7。

标签: java file runtime.exec


【解决方案1】:

我猜您使用的是 Windows 7,当您运行批处理以启动 JFileChooser 测试时,右键单击并选择“以管理员身份运行”。

【讨论】:

  • 是的,如果可以通过代码授予管理员权限,我使用的是 Windows 7。在这里,我在运行时执行“setup.exe”。如果有其他方法可以做到这一点
  • 您无法使用代码执行此操作,但您可以执行另一个批处理并使用其中的 /runas 命令进行设置。但是,如果您当前的用户没有管理员权限,它就无法正常工作。
【解决方案2】:

请求的操作需要提升

您无权执行此设置。可能是 UAC 阻止了它。

在 Java 中使用 runas 命令和 Runtime#exec

【讨论】:

  • 不是使用 Java,而是使用 Rocky 的方法,是的。
  • Rocky 的进程只有套件 如果我手动执行 exe,这里我通过代码执行 exe。是否有任何代码可以执行“以管理员身份运行”模式?
  • 是的,你可以。 Windows 有一个 runas 命令,它应该可以满足您的需求。
  • 这里Process p=rt.exec("runas /user:... test\\setup.exe");
  • 尝试先在cmd中运行,然后在Java中使用。虽然检查runas 返回码和标准输出。
猜你喜欢
  • 1970-01-01
  • 2022-12-15
  • 2023-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-30
  • 1970-01-01
相关资源
最近更新 更多