【问题标题】:How to launch msconfig.exe from Java?如何从 Java 启动 msconfig.exe?
【发布时间】:2023-04-04 02:20:01
【问题描述】:

好的,所以我已经四处寻找了一段时间,但我无法弄清楚我的程序出了什么问题。我正在尝试制作一个类似 cmd.exe 的程序。一个命令应该启动位于 C:/Windows/System32 中的 msconfig.exe。但它给了我一个 java.io.IOException:

java.io.IOException: Cannot run program "C:/Windows/System32/msconfig.exe": CreateProcess error=2, The system cannot find the file specified

这是我的代码:

    public static void msconfig() {
    try {
        Runtime rt = Runtime.getRuntime();
        Process process = rt.exec("C:/Windows/System32/msconfig.exe");
        InputStream in = process.getInputStream();
        OutputStream out = process.getOutputStream();
        InputStream err = process.getErrorStream();
    } catch (IOException e) {
        Console.printToConsole("Could not launch msconfig.exe");
        e.printStackTrace();
    } finally {
        Console.printToConsole("Successfuly launched msconfig.exe");
    }
}

编辑: 所以我用 Eclipse 导出了应用程序,现在它可以正常工作了!谢谢所有试图帮助我的人:)

【问题讨论】:

  • 首先,我认为您还没有理解“finally”的工作原理。 finally 是一个语句,用于指示应该始终完成的事情,无论 try 块是成功完成还是抛出异常。您在 finally 中的打印语句应该是 try 中的最后一条语句。
  • 奇怪。这个对我有用。我想知道这可能与本地管理员权限有关吗?当然,最明显的检查是文件是否存在。 :-)
  • @maksimov 我做了,我用过很多次,我知道该文件存在,因为 1)我在目录中看到它 2)您可以将目录复制并粘贴到 Windows 资源管理器中并且应用程序启动。
  • @Ina 抱歉,我之前没有使用 finally 块。我只是在试验它,而我只写了大约 9 个月的代码。
  • @whowantsakookie 不用道歉,我们就是这样学习的!祝你好运

标签: java command-line command execute


【解决方案1】:

Windows 计算机上的路径使用反斜杠作为分隔符。使用:

Process process = rt.exec("C:\\Windows\\System32\\msconfig.exe");

为了完整起见,反斜杠需要加倍,因为它们是转义字符,需要自己转义。

【讨论】:

  • 真的吗?不知何故,代码在 Windows 7 和 Java 6 上对我来说没有改变。
  • @whowantsakookie 这不是拒绝我的理由。你没说你试过。
  • @MarioDeSchaepmeester 我没有对你投反对票。我还没有足够的代表来做这件事。
  • @whowantsakookie 对不起,我的错。我想知道为什么当时投反对票。谁做的,请注意解释。
  • @MarioDeSchaepmeester 我不想对你投反对票,但你的回答并没有帮助,因为它适用于正斜杠和双反斜杠。
【解决方案2】:

您使用了“错误”的反斜杠。 windows 路径与 \

一起使用

尝试路径 c:\windows\system32\msconfig.exe

【讨论】:

  • Windows 接受斜线,而且它们更容易输入。对于相对路径(前面没有“C:”之类的驱动器号),您可以获得可移植性,例如,如果您加载“./icon.gif”。
猜你喜欢
  • 1970-01-01
  • 2013-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-28
  • 1970-01-01
  • 1970-01-01
  • 2017-08-07
相关资源
最近更新 更多