Запуск Java-файла от имени администратора с полными правами
Я сделал приложение Java, и я тестировал его на своем ПК и моем придуманном ПК, до сих пор так хорошо... Но это приложение для другого моего друга, у которого есть дискотека, когда я "установил" свое приложение на своем ПК (Windows Vista 32 bits), это не сработало, затем я иду искать и искать, и я узнаю, что проблема в качестве привилегий... Я установил виртуальную машину vista 32 бит и xp 32 бит для выполнения некоторых тестов, и я не могу запустить свое приложение с полным администратором преференции.
есть ли способ создать пакетный файл или что-то, что позволит мне запустить приложение со всеми привилегиями? Я имею в виду все, потому что мне нужно подключиться к COM-порту компьютера, чтобы получить некоторые данные с устройства, и мне нужно сохранить некоторые файлы, и поскольку я использую внешнюю библиотеку, мне могут понадобиться некоторые привилегии, которые я не знаю... Я пробовал это, и ничего не работает:
elevate "c:Program FilesJavajrebinjava.exe" -jar "%CD%installer.jar"
используя сценарии elevate от microsoft, я также создал пакетный файл с
runas /user:Administrator myjar.jar
но ничего не получалось : Есть идеи? заранее спасибо
4 ответов
этот ответ предназначен для тех, кто хочет предоставить административные привилегии своим классам jars или java. После успешной разработки exe для редактирования файлов, хранящихся в admin. ограниченные каталоги, я разработал эти шаги, чтобы следовать за вами, надеюсь, это может помочь вам: Вещи, которые нужно понять: 1) банки не будут напрямую скомпилированы с привилегиями, скорее, вы должны обернуть их каким-то другим файлом mainfest, чтобы, наконец, иметь exe-файлы, способные работать на windows xp / vista/ или выше версия с привилегиями. На самом деле возможный ответ до сих пор заключается в том, что перед запуском exe заставляет пользователя давать права администратора, в отличие от того, где пользователь должен знать, как запустить jar с правами администратора, который не является дружественным.
теперь несложных шагов:
создайте файл jar, как try2.jar, содержащий некоторые манифеста файл-- My1.mf как всегда.Таким образом, абсолютный путь файла jar будет C:\try - ... сосуд.
теперь вам нужно загрузите программное обеспечение" Launch4j", которое поможет вам обернуть файлы jar.Его ссылки для скачивания:http://sourceforge.net/projects/launch4j/files/launch4j-3/3.1.0-beta2/
теперь выньте 5 мин. и посмотрите этот учебник:http://www.youtube.com/watch?v=mARUFRknTYQ; это расскажет вам основные функции Launch4j. Но здесь не будет ясно, как создать файл манифеста для вашего exe.
-
после изучения этого, затем создайте файл манифеста, это простой текстовый файл с расширением ".манифест " спасен. Но здесь некоторые вещи, о которых нужно позаботиться: во-первых, ваш файл mainfest должен иметь то же имя, что и ваш окончательный exe для создания. В моем случае имя моего exe должно было быть " Launchme.exe " таким образом, мой файл манифеста должен был быть назван как "Launchme.проявляться." Во-вторых, в файле манифеста просто скопируйте этот контент:
<?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>
скопируйте приведенный выше код в ваш файл манифеста. здесь 6-это ключ ко всей проблеме. Затем сохраните его и закройте.
- теперь начните Launch4j, заполните все преподаваемые текстовые поля, как в видео в соответствии с вашими условиями. В столбце Wrapper mainfest добавьте этот файл манифеста. Затем нажмите кнопку" сохранить конфигурацию " и нажмите кнопку-- Build Wrapper.
теперь у вас есть exe, содержащий ваш jar, который просит пользователя предоставить права администратора перед выполнением. Теперь пользователь свободен от знания чего-либо, кроме кликов!
Я создал общее решение на основе Java для этой проблемы на github в https://github.com/rritoch/super-user-application . Система использует JNA или Sudo для предоставления кросс-платформенного java-приложения (jar), которое выполняется с правами администратора. Самый простой способ использовать его-расширить абстрактный класс SuperUserApplication и позвоните СУ.запустите (new MyMain (), args) из вашей основной функции следующим образом.
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;
}
}
эта библиотека был протестирован на linux и windows, но также должен работать для Mac/OSX. Основным недостатком этого решения является то, что оно функционирует только тогда, когда приложение выполняется как jar. Когда выполняемый jar не имеет прав администратора, ему необходимо повторно выполнить jar с правами администратора. Если приложение не было запущено из jar, оно создает исключение InvalidStateException.
Не стесняйтесь внести свой вклад в этот проект.
Использовать Gradle
вы также можете использовать Gradle и плагин launch4j. Начните с шага 3 из Ashium это, т. е. создать файл myapp.manifest
С
<?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>
затем добавьте в свой 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"
}
запустить командную строку в режиме администратора. Более конкретно:
- найти .
- щелкните правой кнопкой мыши и
run as administrator
привилегии.