Je vais vous expliquer comment obtenez-vous application java élevée
import java.io.IOException;
public class RunAsAdminExample {
public static void main(String[] args) throws IOException {
Process myappProcess = Runtime.getRuntime().exec("powershell.exe Start-Process <program.exe> -verb RunAs");
}
}
program.exe est par exemple il suffit d'appeler notepad.exe
import java.io.IOException;
public class RunAsAdminExample {
public static void main(String[] args) throws IOException {
Process myappProcess = Runtime.getRuntime().exec("powershell.exe Start-Process notepad.exe -verb RunAs");
}
}
Que vous avez programme élevé. Je recommande vous - Vous devez convertir en emballage binaire comme Launch4j ou parcle Que vous pouvez cliquer - (. Réalisé par Java Swing ou Awt) Si vous créez programme d'installation personnalisé
J'espère que vous avez une bonne solution :) - Si vous utiliser Linux ou Mac OS X que vous avez besoin d'utiliser wrapper binaire parcle ou tout autre emballage si vous savez ...
// EDIT bonne idée par Kaptkaos que vous écrivez simple:
import java.io.IOException;
public class RunAsAdminExample {
public static void main(String[] args) throws IOException {
Process myappProcess = Runtime.getRuntime().exec("powershell.exe Start-Process -FilePath java.exe -Argument '-jar runasadmin.jar' -verb RunAs");
}
}
ne pas oublier de utilisez '' and "" if -jar .jar from -Argument de Start-Process. Remarque ne pas oublier - Si vous utilisez le répertoire de travail et le fichier jar doit être dans l'exemple de répertoire de travail \ myjar.jar java \ RunAsAdminExample.class Que vous pouvez voir java élevée avec l'argument :)
Meilleures salutations..!
Le problème est bien sûr que "l'exécutable" sera la JVM, pas votre propre code. Et puisque le manifeste s'applique à la JVM, il s'applique à tout ce qui est exécuté par cette JVM. – MSalters
Et si vous avez un wrapper exe qui lance java? L'accès administrateur sera-t-il hérité par le processus fils (jvm)? – Cal
@Cal - Oui - une fois qu'un processus est élevé, tous les processus qu'il crée seront élevés. L'élévation de l'UAC change littéralement l'utilisateur que l'application est en cours d'exécution, et c'est une rue à sens unique - vous pouvez l'élever, mais vous ne pouvez pas redescendre. –