【问题标题】:How to execute dos commands in java with administrative privilege?如何在具有管理权限的java中执行dos命令?
【发布时间】:2016-04-20 22:21:55
【问题描述】:

我正在用 Java 开发一个项目来扫描文件系统,这涉及到以管理员权限在 java 中执行 dos 命令

我已经编写了在 Java 中执行简单 dos 命令的程序。

public class doscmd {

    public static void main(String args[]) {
        try {
            Process p = Runtime.getRuntime().exec("cmd /C dir");
            p.waitFor();
            BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
            String line = reader.readLine();
            while (line != null) {
                System.out.println(line);
                line = reader.readLine();
            }

        } catch (IOException e1) {
        } catch (InterruptedException e2) {
        }

        System.out.println("Done");
    }
}

但正如您所见,这不允许执行提升的命令。

我正在 Netbeans IDE 中开发项目,我希望你们中的任何人能告诉我 java 中是否有任何代码来获得管理员权限,而不是将文件转换为 .exe,然后单击以管理员身份运行。

【问题讨论】:

标签: java windows netbeans command administrator


【解决方案1】:

您的 JVM 需要以管理员权限运行才能启动具有管理员权限的进程。

构建您的代码并以管理员身份运行它 - 您的类生成的每个进程也将具有管理员权限。

【讨论】:

  • 如何为我的 JVM 授予管理权限? @TheBigLou13 我知道我可以以管理员身份在外部运行该程序,但我如何在代码本身中执行它。
【解决方案2】:

试试这个代码,它对我有用:

    String command = "cmd /c start cmd.exe";
    Process child = Runtime.getRuntime().exec(command);
    OutputStream output = child.getOutputStream();

    output .write("cd C:/ /r/n".getBytes());
    output .flush();
    output .write("DIR /r/n".getBytes());
    output .close(); 

【讨论】:

  • 这应该可行。我在 ping 时使用此策略,100% 成功。
  • @rdn87 当您以管理权限打开 IDE 时,此代码有效,但如果我想部署我的应用程序并使其成为可运行的 jar,我该如何授予该 jar 管理员权限?
  • @TonyThomas 看到这篇文章:stackoverflow.com/questions/19037339/…
猜你喜欢
  • 2023-03-23
  • 1970-01-01
  • 2011-11-29
  • 1970-01-01
  • 2016-01-19
  • 2019-10-15
  • 2017-09-24
  • 2013-03-07
  • 1970-01-01
相关资源
最近更新 更多