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