2013-09-26 12 views
19

Ich habe eine Java-Anwendung gemacht und ich testete es in meinem PC und meinem geprägten PC, so weit so gut ... Aber diese Anwendung ist für einen anderen Freund von mir, die eine Disco haben , als ich meine Anwendung auf seinem PC (Windows Vista 32 Bit) "installiert" hat es nicht funktioniert, dann gehe ich suchen und suchen und ich finde, dass das Problem als die Privilegien ... Ich installierte eine virtuelle Maschine von Vista 32 Bit und XP 32 Bits, um einige Tests zu machen, und ich bin nicht in der Lage, meine Anwendung mit vollen Administratorrechten auszuführen.Run Java-Datei als Administrator mit voller Berechtigungen

Gibt es eine Möglichkeit, eine Batch-Datei oder etwas zu erstellen, die es mir erlauben würde, meine Anwendung mit allen Rechten auszuführen? Ich meine alle, weil ich eine Verbindung zu einem COM-Port des Computers herstellen muss, um einige Daten von einem Gerät zu erhalten, und ich muss einige Dateien speichern, und da ich eine externe Bibliothek verwende, benötige ich möglicherweise einige Privilegien, die ich nicht kenne ... ich habe versucht, dies und nichts funktioniert:

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

Elevate Skripte von Microsoft verwenden, habe ich auch eine Batch-Datei mit

runas /user:Administrator myjar.jar 

aber nichts funktionierte: \ Irgendwelche Ideen? Vielen Dank im Voraus

Antwort

35

Diese Antwort ist für diejenigen, die bereit sind, ihren Gläsern oder Java-Klassen Administratorrechte zu gewähren. Nach dem erfolgreichen Entwickeln einer exe zum Bearbeiten von Dateien in Admin gehalten. beschränkte Verzeichnisse, ich habe diese Schritte entwickelt, um für Sie zu folgen, hoffe, dass dies Ihnen helfen kann: Dinge zu verstehen: 1) Gläser werden nicht direkt mit Privilegien eher kompiliert, Sie müssen sie mit einigen anderen Mainfest-Datei schließlich umwickeln haben exe-Dateien in der Lage, auf Windows XP/Vista/oder höhere Version mit Privilegien zu laufen. Tatsächlich ist die mögliche Antwort bis jetzt, dass exe vor der Ausführung den Benutzer zwingt, Admin-Rechte zu geben, anders als vorher, wo der Benutzer wissen soll, wie man jar mit Admin-Rechten ausführt, was nicht freundlich ist.

Jetzt die einfachen Schritte: 1) Erstellen Sie Ihre JAR-Datei wie try2.jar mit einigen Mainifest-Datei - My1.mf wie immer. Also, der absolute Pfad der JAR-Datei wäre C: \ try.jar .

2) Jetzt müssen Sie eine Software "launch4j" herunterladen, die Sie jar files.Its Download-Links zu wickeln ist helfen: http://sourceforge.net/projects/launch4j/files/launch4j-3/3.1.0-beta2/

3) Nun nehmen 5 min. und sehen Sie sich dieses Tutorial an: http://www.youtube.com/watch?v=mARUFRknTYQ; hier erfahren Sie grundlegende Funktionen von Launch4j. Aber hier wird nicht klar sein, wie man eine Manifest-Datei für Ihre exe erstellt.

3) Nachdem Sie dies gelernt haben, erstellen Sie eine Manifest-Datei, es ist eine einfache Textdatei mit der Erweiterung ".manifest" gespeichert. Aber hier sind einige Dinge zu beachten: Erstens, Ihre Mainfest-Datei muss den gleichen Namen haben wie der Ihrer fertigen exe. In meinem Fall sollte der Name meiner Exe "Launchme.exe" lauten, daher musste meine Manifest-Datei als "Launchme.manifest" benannt werden. Zweitens kopieren Sie in der Manifestdatei diesen Inhalt einfach:

<?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 Problems. Dann speichern Sie es und schließen Sie es.

4) Starten Sie nun Launch4j, füllen Sie alle gelehrten Textfelder wie im Video gemäß Ihren Bedingungen. In der Wrapper-Mainfest-Spalte fügen Sie diese Datei-Manifest-Datei hinzu. Klicken Sie dann auf "Konfiguration speichern" und dann auf - Build Wrapper.

Nun haben Sie exe mit Ihrem Jar, der den Benutzer auffordert, vor der Ausführung Administratorrechte zu erteilen.Jetzt kann der Benutzer nichts anderes als Klicks wissen!

+0

Obwohl ich Ihre Antwort nicht getestet habe, aber das scheint vielversprechend. Danke für diese Antwort. –

+0

Große Antwort! Danke (+1) – Danielle

+2

Entschuldigung, um zu solch einem alten Beitrag zurückzukehren, aber gibt es eine Möglichkeit, den "unbekannten Publisher" loszuwerden, wenn er nach Admin-Rechten fragt? – Maverick283

1

Führen Sie die Eingabeaufforderung im Administratormodus aus. Genauer gesagt: 1. Suchen Sie die Datei% windir% \ system32 \ cmd.exe. 2. Klicken Sie mit der rechten Maustaste und führen Sie die Administratorberechtigung aus.

6

Ich habe eine generische Java-basierte Lösung für dieses Problem auf GitHub um https://github.com/rritoch/super-user-application erstellt. Das System verwendet JNA oder Sudo, um eine plattformübergreifende Java-Anwendung (jar) bereitzustellen, die mit Administratorrechten ausgeführt wird. Am einfachsten ist es, wenn Sie Ihre Hauptklasse um die abstrakte Klasse SuperUserApplication erweitern und SU.run (new MyMain(), args) wie folgt von Ihrer Hauptfunktion aufrufen.

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 für Mac/OSX funktionieren. Der Hauptnachteil dieser Lösung besteht darin, dass sie nur funktioniert, wenn die Anwendung als jar ausgeführt wird. Wenn das ausgeführte Jar keine Administratorrechte hat, muss das Jar mit Administratorrechten erneut ausgeführt werden. Wenn die Anwendung nicht von einem Jar ausgeführt wurde, wird eine InvalidStateException ausgelöst.

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

+0

Haben Sie nur eine JAR-Datei von diesem bereits gebaut, so dass ich es schnell zu einem Projekt hinzufügen kann, das ich in Netbeans mache? Wenn nicht, können Sie erklären, wie man das in Netbeans kompiliert? Ich möchte nicht Maven werden, wenn das eine Voraussetzung ist. –

+0

Laden Sie es einfach von maven http://mvnrepository.com/artifact/com.vnetpublishing.java/super-user-application/0.0.5 herunter –