it-swarm.com.de

Führen Sie die Java Datei als Administrator mit vollen Rechten aus

Ich habe eine Java Anwendung erstellt und ich habe sie in meinem PC und meinem geprägten PC getestet, soweit so gut ... Aber diese Anwendung ist für einen anderen Freund von mir, der eine Disco hat, wenn ich "installierte" meine Anwendung auf seinem PC (Windows Vista 32 Bit), es hat nicht funktioniert, dann gehe ich auf die Suche und stelle fest, dass das Problem die Privilegien sind ... Ich habe eine virtuelle Maschine mit Vista 32 Bit und XP installiert 32 Bit, um einige Tests durchzuführen, und ich kann meine Anwendung nicht mit vollständigen Administratorrechten ausführen.

Gibt es eine Möglichkeit, eine Batchdatei zu erstellen oder etwas, mit dem ich meine Anwendung mit allen Berechtigungen ausführen kann? Ich meine alles, weil ich eine Verbindung zu einem COM-Anschluss des Computers herstellen muss, um Daten von einem Gerät zu erhalten, und einige Dateien speichern muss. Da ich eine externe Bibliothek verwende, benötige ich möglicherweise einige Berechtigungen, die ich nicht kenne ... ich habe das ausprobiert und nichts funktioniert:

elevate "c:\Program Files\Java\jre\bin\Java.exe" -jar "%CD%\installer.jar"

mit den Elevate-Skripten von Microsoft habe ich auch eine Batch-Datei mit erstellt

runas /user:Administrator myjar.jar

aber nichts hat funktioniert:\Irgendwelche Ideen? danke im Voraus

21
João Silva

Diese Antwort richtet sich an Benutzer, die ihren Jars oder Java Klassen Administratorrechte gewähren möchten. Nach der erfolgreichen Entwicklung einer Exe zum Bearbeiten von Dateien, die in Verzeichnissen mit Administratorrechten gespeichert sind, habe ich die folgenden Schritte entwickelt Wir hoffen, dass dies für Sie hilfreich sein kann: Dinge, die Sie verstehen sollten: 1) Jars werden nicht direkt mit Privilegien kompiliert, sondern Sie müssen sie mit einer anderen Hauptdatei verpacken, damit Exe-Dateien endlich unter Windows XP/Vista/laufen können. oder höhere Version mit Privilegien. Tatsächlich ist die mögliche Antwort bis jetzt, dass exe den Benutzer vor der Ausführung zwingt, Administratorrechte zu erteilen, anders als zuvor, wo erwartet wird, dass der Benutzer weiß, wie man jar mit Administratorrechten ausführt, die nicht freundlich sind.

Nun die einfachen Schritte:

  1. Erstellen Sie eine JAR-Datei wie try2.jar, die eine Mainifest-Datei enthält - My1.mf wie immer. Der absolute Pfad der JAR-Datei lautet also C:\try.jar.

  2. Jetzt müssen Sie eine Software "Launch4j" herunterladen, mit der Sie JAR-Dateien verpacken können. Die Download-Links lauten: http://sourceforge.net/projects/launch4j/files/launch4j-3/3.1.0- beta2 /

  3. Nehmen Sie nun 5 min. und sieh dir dieses Tutorial an: http://www.youtube.com/watch?v=mARUFRknTYQ ; dies erklärt dir die Grundfunktionen von Launch4j. Aber hier ist nicht klar, wie eine Manifest-Datei für Ihre Exe erstellt werden soll.

  4. Nachdem Sie dies gelernt haben und eine Manifestdatei erstellt haben, wird eine einfache Textdatei mit der Erweiterung ".manifest" gespeichert. Aber hier sind einige Dinge zu beachten: Erstens muss Ihre Hauptdatei den gleichen Namen haben wie die endgültige Exe, die erstellt werden soll. In meinem Fall sollte der Name meiner Exe "Launchme.exe" lauten, daher musste meine Manifest-Datei "Launchme.manifest" heißen. Zweitens kopieren Sie in der Manifest-Datei einfach diesen Inhalt:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <Assembly xmlns="urn:schemas-Microsoft-com:asm.v1" manifestVersion="1.0">
    <trustInfo xmlns="urn:schemas-Microsoft-com:asm.v3">
    <security>
    <requestedPrivileges>
    <requestedExecutionLevel level="highestAvailable"   uiAccess="False" />
    </requestedPrivileges>
    </security>
    </trustInfo>
    </Assembly>  
    

kopieren Sie den obigen Code in Ihre Manifest-Datei. Hier ist Zeile 6 der Schlüssel des ganzen Themas. Speichern Sie es dann und schließen Sie es.

  1. Starten Sie nun Launch4j und füllen Sie alle gelernten Textfelder wie im Video entsprechend Ihren Bedingungen aus. Fügen Sie in der Wrapper-Hauptfest-Spalte diese Dateimanifestdatei hinzu. Klicken Sie dann auf die Option "Konfiguration speichern" und dann auf "Build Wrapper".

Jetzt haben Sie eine exe-Datei mit Ihrem jar, die den Benutzer auffordert, vor der Ausführung Administratorrechte zu erteilen. Jetzt kann der Benutzer nur noch Klicks ausführen!

43
Ashium

Ich habe eine generische Java basierte Lösung für dieses Problem auf Github unter https://github.com/rritoch/super-user-application erstellt. Das System verwendet JNA oder Sudo, um eine plattformübergreifende Java jar) -Anwendung bereitzustellen, die mit Administratorrechten ausgeführt wird. Der einfachste Weg, sie zu verwenden, besteht darin, Ihre Hauptklasse die abstrakte Klasse zu erweitern SuperUserApplication und rufen Sie SU.run (new MyMain (), args) in Ihrer Hauptfunktion wie folgt auf.

package com.vnetpublishing.Java;

import com.vnetpublishing.Java.suapp.SU;
import com.vnetpublishing.Java.suapp.SuperUserApplication;

public class TestAdmin extends SuperUserApplication {

    public static void main(String[] args) {
        SU.run(new TestAdmin(), args);
    }

    public int run(String[] args) {
        System.out.println("RUN AS ADMIN! YAY!");
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        return 0;
    }
}

Diese Bibliothek wurde unter Linux und Windows getestet, sollte aber auch unter Mac/OSX funktionieren. Der Hauptnachteil dieser Lösung besteht darin, dass sie nur funktioniert, wenn die Anwendung als JAR ausgeführt wird. Wenn die ausgeführte JAR-Datei keine Administratorrechte hat, muss sie mit Administratorrechten erneut ausgeführt werden. Wenn die Anwendung nicht aus einer JAR-Datei ausgeführt wurde, wird eine InvalidStateException ausgelöst.

Fühlen Sie sich frei, zu diesem Projekt beizutragen.

8
Ralph Ritoch

Führen Sie die Eingabeaufforderung im Administratormodus aus. Um genauer zu sein:

  1. Suchen Sie das %windir%\system32\cmd.exe Datei.
  2. Rechtsklick und run as administrator Privileg.
2
Vengat Maran

Verwenden von Gradle

Sie können auch Gradle und das launch4j-Plugin verwenden. Beginnen Sie mit Schritt 3 von Ashiums Antwort , d. H. Erstellen Sie eine Datei myapp.manifest mit

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Assembly xmlns="urn:schemas-Microsoft-com:asm.v1" manifestVersion="1.0">
<trustInfo xmlns="urn:schemas-Microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="highestAvailable"   uiAccess="False" />
</requestedPrivileges>
</security>
</trustInfo>
</Assembly>  

dann füge zu deinem build.gradle

plugins {
  id 'Java'
  id 'edu.sc.seis.launch4j' version '2.4.3'
}

launch4j {
    mainClassName = 'com.mypackage.MainClass'
    icon = "$projectDir/icons/icon.ico"
    manifest = "$projectDir/myapp.manifest"
}
1
PHPirate