Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.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 以管理员身份运行进程_Java_Windows - Fatal编程技术网

Java 以管理员身份运行进程

Java 以管理员身份运行进程,java,windows,Java,Windows,我正试图以管理员身份运行命令行命令 我已经创建了一个名为devconShort的devcon.exe快捷方式。在快捷方式的属性中,我选中了以管理员身份运行的框。我直接在命令行中尝试了快捷方式,但windows仍然询问我是否允许应用程序对我的计算机进行更改 但是当我在Java代码中运行它时,我得到一个错误,windows无法找到该文件 我正在使用下面的代码运行快捷方式。还有别的办法吗 try { Runtime rt = Runtime.getRuntime();

我正试图以管理员身份运行命令行命令

我已经创建了一个名为devconShort的devcon.exe快捷方式。在快捷方式的属性中,我选中了以管理员身份运行的框。我直接在命令行中尝试了快捷方式,但windows仍然询问我是否允许应用程序对我的计算机进行更改

但是当我在Java代码中运行它时,我得到一个错误,windows无法找到该文件

我正在使用下面的代码运行快捷方式。还有别的办法吗

    try
    {
        Runtime rt = Runtime.getRuntime();
        Process pr = null;
        pr = rt.exec("cmd /c start \"\" \"C:\\devconShort.lnk enable *DEV_4222*\"");

        BufferedReader input = new BufferedReader(new InputStreamReader(pr.getInputStream()));

        String line = null;

        while ((line = input.readLine()) != null)
        {
            System.out.println(line);
        }

        int exitVal = pr.waitFor();
        System.out.println("Exited with error code " + exitVal);
    }
    catch (Exception e)
    {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
我还尝试了以下方法

pr = rt.exec("runas /noprofile /user:Administrator \"C:\\devconShort.lnk enable *DEV_4222*\"");
它给出了以下信息


您需要以管理员身份启动CMD窗口-试一试:

try{

    Runtime rt = Runtime.getRuntime();

    Process pr = null;

    pr = rt.exec("runas /noprofile /user:Administrator cmd /c start \"\" \"C:\\devconShort.lnk enable *DEV_4222*\"");

    BufferedReader input = new BufferedReader(new InputStreamReader(pr.getInputStream()));

    String line = null;

    while ((line = input.readLine()) != null)
    {
        System.out.println(line);
    }

    int exitVal = pr.waitFor();
    System.out.println("Exited with error code " + exitVal);
}
catch (Exception e)
{
    // TODO Auto-generated catch block
    e.printStackTrace();
}

确切的错误/堆栈跟踪是什么?@dimo414我添加了错误的图像。您引用了整个命令行,因此它试图运行一个名为
devconShort.lnk disable*DEV_4222*
的文件。尝试将最后一个引号移动到
.lnk
@HarryJohnston之后。如果我以管理员身份启动java程序,这会起作用。感谢您注意,如果Java程序以管理员身份运行,您不需要快捷方式-您可以直接运行devcon.exe。