Exécuter le fichier Java en tant Qu'administrateur avec des privilèges complets

J'ai fait une Application Java et je l'AI testée sur mon pc et mon PC inventé, jusqu'à présent tout va bien... Mais cette application est pour un autre de mes amis qui ont une discothèque, quand j'ai "installé" mon application sur son pc (Windows Vista 32 bits) cela n'a pas fonctionné, alors je vais chercher et chercher et je découvre que le problème que les privilèges... J'ai installé une machine virtuelle de vista 32 bits et xp 32 bits pour faire quelques tests et je ne suis pas en mesure d'exécuter mon application avec l'administrateur complet privilège.

Existe-t-il un moyen de créer un fichier batch ou quelque chose qui me permettrait d'exécuter mon application avec tous les privilèges? Je veux dire tout cela parce que j'ai besoin de me connecter à un port COM de l'ordinateur pour obtenir des données à partir d'un périphérique et j'ai besoin de stocker des fichiers, et puisque j'utilise une bibliothèque externe, je pourrais avoir besoin de privilèges que je ne connais pas... J'ai essayé cela et rien ne fonctionne:

elevate "c:Program FilesJavajrebinjava.exe" -jar "%CD%installer.jar"

En utilisant les scripts elevate de microsoft, j'ai également créé un fichier batch avec

runas /user:Administrator myjar.jar

Mais rien n'a fonctionné : Des idées? je vous remercie à l'avance

21
demandé sur radoh 2013-09-26 23:47:22

4 réponses

Cette réponse est pour ceux qui veulent fournir des privilèges administratifs à leurs jars ou classes java. Après avoir développé avec succès un exe pour éditer les fichiers conservés dans admin. répertoires restreints, j'ai développé ces étapes à suivre pour vous, j'espère que cela peut vous aider: Les choses pour les comprendre: 1) les Jars ne seront pas directement compilés avec des privilèges, vous devez plutôt les envelopper avec un autre fichier mainfest pour avoir enfin des fichiers exe capables de fonctionner sur windows xp/ vista / ou version supérieure avec des privilèges. En fait, la réponse possible est maintenant qu'avant de courir, exe force l'utilisateur à donner des droits d'administrateur contrairement à avant où l'utilisateur est censé savoir comment exécuter jar avec des droits d'administrateur qui n'est pas amical.

Maintenant les étapes simples:

  1. Créez votre fichier jar comme try2.jar contenant un fichier mainifest-- My1.mf comme comme always.So, le chemin absolu du fichier jar serait C:\try.pot.

  2. Maintenant, vous devez télécharger un logiciel "Launch4j" qui vous aider à envelopper les fichiers jar.Ses liens de téléchargement sont: http://sourceforge.net/projects/launch4j/files/launch4j-3/3.1.0-beta2/

  3. Maintenant, sortez 5 min. et regardez ce tutoriel: http://www.youtube.com/watch?v=mARUFRknTYQ ; cela vous indiquera les fonctions de base de Launch4j. mais ici, il ne sera pas clair comment créer un fichier manifeste pour votre exe.

  4. Après avoir appris cela, créez un fichier de manifeste, c'est un simple fichier texte avec l'extension ".manifester" enregistrer. Mais voici certaines choses à prendre en charge: premièrement, votre fichier mainfest doit avoir le même nom que celui de votre exe final à créer. Dans mon cas, le nom de mon exe était censé être " Launchme.exe "ainsi, mon fichier manifeste devait être nommé" Launchme.manifester". Deuxièmement, dans le fichier manifeste, copiez simplement ce contenu:

    <?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>  
    

Copiez le code ci-dessus dans votre fichier manifeste. ici, la ligne 6 est la clé de toute la question. Puis de l'enregistrer et de le fermer.

  1. Lancez maintenant Launch4j, remplissez tous les champs de texte enseignés comme dans la vidéo selon vos conditions. Dans la colonne wrapper mainfest ajouter ce fichier fichier manifeste. Cliquez ensuite sur l'option" Enregistrer la configuration", puis cliquez sur -- Build Wrapper.

Maintenant, vous avez exe contenant votre jar qui demande à l'utilisateur de donner des droits d'administrateur avant l'exécution. Maintenant, l'utilisateur est libre de savoir autre chose que les clics!

39
répondu Ashium 2018-08-23 11:20:13

J'ai créé une solution Java générique à ce problème sur github à https://github.com/rritoch/super-user-application . Le système utilise JNA ou Sudo pour fournir une application java multiplateforme (jar) qui s'exécute avec des droits d'administrateur. La façon la plus simple de l'utiliser est d'avoir votre classe principale étendre la classe abstraite SuperUserApplication et appeler SU.exécutez (new MyMain (), args) à partir de votre fonction principale comme suit.

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

Cette bibliothèque a été testée sur linux et windows, mais devrait également fonctionner pour Mac / OSX. Le principal inconvénient de cette solution est qu'elle ne fonctionne que lorsque l'application est exécutée dans un bocal. Lorsque le jar exécuté n'a pas de droits d'administrateur, il doit ré-exécuter le jar avec des privilèges d'administrateur. Si l'application n'a pas été exécutée à partir d'un jar, elle lance une InvalidStateException.

Hésitez pas à contribuer à ce projet.

7
répondu Ralph Ritoch 2015-04-28 11:56:57

À L'Aide De Gradle

Vous pouvez également utiliser Gradle et le plugin launch4j . Commencez à l'étape 3 de la réponse d'Ashium , c'est-à-dire créez un fichier myapp.manifest avec

<?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>  

, Puis ajoutez à votre 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
répondu PHPirate 2018-04-05 06:47:41

Exécutez votre invite de commande en mode administrateur. Pour plus spécifique:

  1. Recherchez le fichier %windir%\system32\cmd.exe.
  2. clic droit et privilège run as administrator.
1
répondu Vengat Maran 2018-08-23 11:20:56