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);
答案 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中,您不必转义反斜杠\字符,因此如果失败,您可能要尝试将两个反斜杠的序列替换为两个。祝你好运!