我使用restart函数编写了一个java客户端/服务器应用程序。 在服务器端,我添加了一个按钮,用于向所有连接的客户端发送重置命令。
当我在计算机上运行客户端时,重启方法工作正常。
public void restartApplication() {
try {
final String javaBin = System.getProperty("java.home") + File.separator + "bin" + File.separator + "java";
final File currentJar = new File(Client_Main.class.getProtectionDomain().getCodeSource().getLocation().toURI());
/* is it a jar file? */
if (!currentJar.getName().endsWith(".jar")) {
return;
}
/* Build command: java -jar application.jar */
final String command = "\""+javaBin+".exe\" -jar \""+currentJar.getPath()+"\"";
System.out.println(command);
final ProcessBuilder builder = new ProcessBuilder(command);
builder.start();
System.exit(0);
} catch (URISyntaxException ex) {
Logger.getLogger(Client_Main.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(Client_Main.class.getName()).log(Level.SEVERE, null, ex);
}
}
我的问题是,所有非管理员用户都有一个非常严格的配置文件,如果没有管理员权限,他们就无法打开命令提示符。
有没有办法,如何在不使用命令提示符的情况下重启我的jar文件,或以管理员身份运行命令promt? 我不能使用RUNAS命令,因为我必须在第一次输入管理员密码,所以我必须在500多台计算机上执行此操作,这不是一个真正的选择。