如何使用管理员权限从java运行批处理文件?

时间:2016-04-05 00:13:16

标签: java file batch-file privileges administrator

how to run a batch file from java using administrator privileges?

我正在尝试这样做。但是代码无效。

String cmd = "runas /profile /user:Administrator /cmd.exe /C certutil -addstore ROOT  E:\\WORK\\UI\\DesktopRecorder\\userdata\\certgen\\X509CA\\ca\\new_ca.crt";

Runtime run = Runtime.getRuntime();
Process process = run.exec(cmd);

2 个答案:

答案 0 :(得分:2)

您可以创建bat文件的快捷方式,并使其作为管理员从Properties>运行。先进,

既然你创建了bat文件的快捷方式,我们可以说它的名字是example.bat,它位于C盘上,这意味着它的全名是c:\\example.bat.lnk

要运行此快捷方式,您需要使用ProcessBuilder运行它, 它看起来应该是这样的:

ProcessBuilder pb = new ProcessBuilder("cmd", "/c","c:\\example.bat.lnk");   
Process p = pb.start();

使用 Runtime.getRuntime().exec();

无法正常工作

答案 1 :(得分:0)

runas需要将其主要输入参数封装在双引号中。踢球者 cmd.exe也是,如果你传给一个带空格的命令字符串,那么你必须使用转义字符才能在windows命令提示符下工作:

runas /profile /user:Administrator "cmd.exe /C \"certutil -addstore ROOT  E:\\WORK\\UI\\DesktopRecorder\\userdata\\certgen\\X509CA\\ca\\new_ca.crt\""

然后你必须再次转义整个字符串 才能在你的java代码中工作:

String cmd = "runas /profile /user:Administrator \"cmd.exe /C \\\"certutil -addstore ROOT  E:\\\\WORK\\\\UI\\\\DesktopRecorder\\\\userdata\\\\certgen\\\\X509CA\\\\ca\\\\new_ca.crt\\\"\"";

有时在使用嵌套cmd调用的runas中,您不必转义反斜杠\字符,因此如果失败,您可能要尝试将两个反斜杠的序列替换为两个。祝你好运!