[英]how to run a batch file from java using administrator privileges?
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);
您可以创建bat文件的快捷方式,并通过“属性”>“高级”以管理员身份运行该文件,
现在,您已经创建了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();
将无法使用 Runtime.getRuntime().exec();
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中,不必转义反斜杠\\字符,因此,如果失败,则可能需要尝试将两个反斜杠的序列替换为两个。 祝好运!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.