Подтвердить что ты не робот

Запустить файл Java в качестве администратора с полными привилегиями

Я сделал приложение Java, и я тестировал его в своем компьютере и моем придуманном ПК, пока что так хорошо... Но это приложение для другого моего друга, у которого есть дискотека, когда я "установил" свое приложение на своем компьютере (32-разрядные версии Windows Vista), он не работал, затем я ищу и ищу, и я узнаю, что проблема как привилегии... Я установил виртуальную машину с перспективой 32 бита и xp 32 бита, чтобы выполнить некоторые тесты, и я не могу запустить свое приложение с полными правами администратора.

Есть ли способ создать пакетный файл или что-то, что позволит мне запускать мое приложение со всеми привилегиями? Я имею в виду все, потому что мне нужно подключиться к COM-порту компьютера, чтобы получить некоторые данные с устройства, и мне нужно сохранить некоторые файлы, а поскольку я использую внешнюю библиотеку, мне могут потребоваться некоторые привилегии, которые я не знаю... Я пробовал это, и ничего не работает:

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

используя сценарии повышения уровня от microsoft, я также создал командный файл с

runas /user:Administrator myjar.jar

но ничего не получилось: \ Есть идеи? заранее спасибо

4b9b3361

Ответ 1

Этот ответ предназначен для тех, кто хочет предоставить административные привилегии своим банкам или java-классам. После успешной разработки exe для редактирования файлов, хранящихся в admin. ограниченные каталоги, я разработал эти шаги, чтобы следовать за вами, надеюсь, что это может вам помочь:   Что нужно понимать: 1) Jars не будет напрямую скомпилирован с привилегиями, а вам придется обернуть их каким-либо другим файлом mainfest, чтобы, наконец, иметь exe файлы, способные работать на Windows XP/Vista/или более высокой версии с привилегиями. На самом деле возможный ответ uptil теперь заключается в том, что перед запуском exe заставляет пользователя давать права администратора в отличие от того, где пользователь должен знать, как запустить jar с правами администратора, которые не являются дружественными.

Теперь простые шаги: 1) Создайте свой файл jar, например try2.jar, содержащий файл mainifest - My1.mf как всегда. Таким образом, абсолютным путем для файла jar будет C:\try.jar.

2) Теперь вам нужно скачать программное обеспечение "Launch4j", которое поможет вам обернуть файлы jar. Его ссылки для скачивания: http://sourceforge.net/projects/launch4j/files/launch4j-3/3.1.0-beta2/

3) Теперь выньте 5 минут. и посмотрите этот учебник: http://www.youtube.com/watch?v=mARUFRknTYQ, это расскажет вам основные функции Launch4j. Но здесь будет неясно, как создать файл манифеста для вашего exe.

3) Изучив это, создайте файл манифеста, это простой текстовый файл с расширением ".manifest". Но вот некоторые вещи, о которых нужно позаботиться: во-первых, ваш файл mainfest должен иметь то же имя, что и ваш окончательный exe. В моем случае имя моего exe должно было быть "Launchme.exe", поэтому мой файл манифеста должен был называться "Launchme.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>  

скопируйте приведенный выше код в файл манифеста. здесь строка 6 является ключом всей проблемы. Затем сохраните его и закройте.

4) Теперь запустите Launch4j, заполните все текстовые поля, как показано на видео, в соответствии с вашими условиями. В столбце Mainfest Wrapper добавьте файл манифеста файла. Затем нажмите "сохранить конфигурацию", а затем нажмите "Построить упаковщик".

Теперь у вас есть exe, содержащий вашу банку, которая просит пользователя предоставить права администратора перед выполнением. Теперь пользователь не знает ничего, кроме кликов!

Ответ 2

Я создал общее решение на базе Java для этой проблемы на github в https://github.com/rritoch/super-user-application. Система использует JNA или Sudo для предоставления Java-приложения с кросс-платформой (jar), которое выполняется с правами администратора. Самый простой способ использовать это, чтобы ваш основной класс расширил абстрактный класс SuperUserApplication и вызвал SU.run(новый 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. Основным недостатком этого решения является то, что он функционирует только тогда, когда приложение выполняется как банка. Когда исполняемый банд не имеет прав администратора, ему необходимо повторно выполнить банку с правами администратора. Если приложение не запускалось из банка, оно выдает InvalidStateException.

Не стесняйтесь вносить свой вклад в этот проект.

Ответ 3

Запустите свою командную строку в режиме администратора. Более конкретно: 1. Найдите файл% windir%\system32\cmd.exe. 2. Щелкните правой кнопкой мыши и запустите как администратор.