Java: Als Administrator ausführen

Lesezeit: 5 Minuten

Java Als Administrator ausfuhren
Martin Courteaux

Gibt es in Java eine Möglichkeit, das System aufzufordern, die Kontrolle über die Administratorfunktion zu übernehmen? Natürlich ohne zu tun: Rechtsklick auf die exe -> als Admin ausführen.
Was ich will, ist, dass es einen Rahmen von UAC wie in Windows Vista oder Windows 7 gibt.

Oder muss ich einige Einstellungen vornehmen, während ich eine Exe aus dem JAR mache?

Sie müssen eine Manifestdatei erstellen, die angibt, dass Ihre Anwendung Administratorberechtigungen benötigt. Sie können das Manifest in Ihre Exe einfügen oder es als separate Datei (yourapp.exe.manifest) behalten.

http://msdn.microsoft.com/en-us/library/bb756929.aspx

  • Das Problem ist natürlich, dass die “ausführbare Datei” die JVM ist, nicht Ihr eigener Code. Und da das Manifest für die JVM gilt, gilt es für alles, was von dieser JVM ausgeführt wird.

    – MSalter

    8. September 2009 um 10:59 Uhr

  • Was ist, wenn Sie eine Wrapper-Exe haben, die Java startet? Wird der Administratorzugriff vom untergeordneten Prozess (jvm) übernommen?

    – Kal

    22. Oktober 2009 um 3:01 Uhr

  • @Cal – Ja – sobald ein Prozess erhöht ist, werden alle von ihm erstellten Prozesse erhöht. Die UAC-Erhöhung ändert buchstäblich den Benutzer, unter dem die Anwendung ausgeführt wird, und es ist eine Einbahnstraße – Sie können eine Erhöhung vornehmen, aber Sie können nicht wieder nach unten fallen.

    – Kevin-Tag

    12. Januar 2011 um 4:32 Uhr

Java Als Administrator ausfuhren
Matt DeVillier

Der einfachste Weg wäre, einen Wrapper zu verwenden, um Ihre JVM zu starten, und dann den Wrapper zu erhöhen. Ich verwende dazu ein einfaches NSIS-Installationsskript mit dem UAC-Plugin:

; Java Launcher
;--------------

; You want to change the below lines   
Name "my program"   
Caption "my program Launcher"    
Icon "iconfile.ico"    
OutFile "java launcher.exe"

; param below can be user, admin    
RequestExecutionLevel admin

!include UAC.nsh

SilentInstall silent
AutoCloseWindow true
ShowInstDetails show

Section ""    
  ; command to execute    
  StrCpy $0 'javaw -jar myjarfile'      
  SetOutPath $EXEDIR    
  Exec $0    
SectionEnd

Die Antwort von ZippyV ist in Ordnung, wenn Sie beabsichtigen, javaw.exe mit Systemadministratorrechten zu starten, was, wenn reiner Java-Code von der UAC blockiert wird (z wird tun müssen.

Wenn Sie jedoch versuchen, etwas Externes zu starten, aber nur mit Erhöhung, können Sie eine Exe bündeln, die einen Befehl erhöht. Hier ist eine.

  • Danke! Normalerweise möchten Sie nicht, dass eine Benutzeranwendung als Administrator ausgeführt wird (nur bestimmte privilegierte Aktionen), daher ist dies wahrscheinlich in den meisten Fällen die geeignetere Lösung. Mir gefällt auch, dass die Elevate.exe eine -wait-Option hat, sodass Sie blockieren können, bis der Befehl mit erhöhten Rechten abgeschlossen ist.

    – rauben

    14. Januar 2011 um 20:33 Uhr


  • Wenn ich Ihren Link richtig gelesen habe, muss man auch die Registrierung ändern, was möglicherweise nicht immer möglich ist.

    – wie Judo

    13. August 2013 um 15:55 Uhr


Sie können ein Windows-Programm verwenden, um Ihre Berechtigungen zu erhöhen. Das Programm zeigt die UAC-Eingabeaufforderung an und Sie haben Administratorrechte.

http://jpassing.com/2007/12/08/launch-elevated-processes-from-the-command-line/

Sie können dann den folgenden Befehl ausführen:

Runtime.getRuntime().exec("Elevate.exe yourcommand");

1645843632 287 Java Als Administrator ausfuhren
Krippe

Wenn Sie alles ausführen können, was Sie zum Ausführen von einer Windows-CMD-Batchdatei benötigen. Ich habe es funktioniert, also startet mein Java-Programm dies und es öffnet die normale Windows-UAC-Eingabeaufforderung für den Benutzer und führt dann die Befehle aus, wenn sie JA wählen.

    String[] commands = {"cmd.exe", "/C" "mybatchfile.bat"};
    ProcessBuilder pb = new ProcessBuilder(commands);
    ..
    pb.start();

Hier ist ein Thread, der sich mit dem Anfordern des UAC-Zugriffs in einer Windows-Batchdatei befasst: How to request Administrator access within a batch file

HINWEIS: ProcessBuilder kann etwas schwierig zu handhaben sein, die Verwendung eines StreamGobbler zur Verarbeitung der Ausgabe funktioniert für mich: Eingabe mit StreamGobbler verarbeiten

Java Als Administrator ausfuhren
Roshan Pitigala

Ich werde erklären, wie Sie eine erhöhte Java-Anwendung erhalten

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 ist zB einfach notepad.exe nennen

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");
    }
}

Dann haben Sie ein erhöhtes Programm. Ich empfehle Ihnen – Sie müssen in einen binären Wrapper wie Launch4j oder Parcle konvertieren, dann können Sie klicken – Wenn Sie ein benutzerdefiniertes Installationsprogramm erstellen (hergestellt von Java Swing oder Awt.)

Ich hoffe, Sie haben eine gute Lösung 🙂 – Wenn Sie Linux oder Mac OS X verwenden, müssen Sie Parcle Binary Wrapper oder einen anderen Wrapper verwenden, wenn Sie wissen …

// EDIT gute Idee von Kaptkaos Dann schreibst du einfach:

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");
    }
}

Verwendung nicht vergessen '' und "" wenn -jar <filename>.jar from -Argument des Start-Prozesses. Hinweis nicht vergessen – Wenn Sie das Arbeitsverzeichnis verwenden, muss sich die JAR-Datei beispielsweise im Arbeitsverzeichnis befinden

  • .\myjar.jar
  • java .\RunAsAdminExample.class

Dann können Sie erhöhtes Java mit Argument sehen 🙂

Mit freundlichen Grüßen!

1645843635 293 Java Als Administrator ausfuhren
Kaptkaos

Ich verwende zu diesem Zweck die Befehlszeile unter Windows. Geben Sie im Startmenü ein cmd in der Textbox und wenn das Programm cmd.exe angezeigt wird, klicken Sie mit der rechten Maustaste darauf und wählen Sie Als Administrator ausführen. Jetzt, wenn Sie ausführen java-jar Es wird mit Admin-Rechten ausgeführt.

  • Der Autor erwähnt ausdrücklich “Natürlich ohne zu tun: Rechtsklick auf die Exe -> als Administrator ausführen”, also was soll diese Antwort?

    – SeverityOne

    13. Oktober 2020 um 7:46 Uhr

859440cookie-checkJava: Als Administrator ausführen

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy