Java: Запуск от имени администратора
есть ли способ в Java попросить систему получить контроль над функциональностью администратора.
Конечно, без этого: щелкните правой кнопкой мыши на exe - > run as admin.
Я хочу, чтобы был кадр из UAC, как в Windows Vista или Windows 7.
или я должен сделать некоторые настройки при создании exe из банки?
8 ответов
необходимо создать файл манифеста, указывающий, что приложению требуются права администратора. Вы можете включить манифест в свой exe или сохранить его как отдельный файл (yourapp.исполняемый.манифест)
самый простой способ-использовать оболочку для запуска JVM, а затем поднять оболочку. Я использую простой скрипт установщика NSIS с плагином UAC для этого:
; Java Launcher
;--------------
; You want to change the below lines
Name "my program"
Caption "my program Launcher"
Icon "iconfile.ico"
OutFile "java launcher.exe"
; param below can be user, admin
RequestExecutionLevel admin
!include UAC.nsh
SilentInstall silent
AutoCloseWindow true
ShowInstDetails show
Section ""
; command to execute
StrCpy 'javaw -jar myjarfile'
SetOutPath $EXEDIR
Exec
SectionEnd
ответ ZippyV в порядке, если вы намерены запустить javaw.exe с привилегиями системного администратора, которые, если чистый код java-это то, что блокируется UAC (например, попытка написать файл в привилегированный каталог), то это то, что вам нужно будет сделать.
Если, однако, вы пытаетесь запустить что-то внешнее, но только с повышением, вы можете связать exe, который поднимает команду. вот один.
вы можете использовать программу windows, чтобы повысить свои привилегии. Программа покажет приглашение UAC, а затем у вас будет привилегия администратора.
http://jpassing.com/2007/12/08/launch-elevated-processes-from-the-command-line/
затем вы можете запустить команды так:
Runtime.getRuntime().exec("Elevate.exe yourcommand");
Если вы можете запустить все, что вам нужно для запуска из пакетного файла Windows CMD.. Вы можете создать пакетный файл (даже на лету) из своего приложения java, который делает то, что вы хотите, и запустить его. У меня он работает, поэтому моя программа java запускает это, и он всплывает обычное приглашение Windows UAC пользователю, а затем запускает команды, если они выбирают да.
String[] commands = {"cmd.exe", "/C" "mybatchfile.bat"};
ProcessBuilder pb = new ProcessBuilder(commands);
..
pb.start();
вот поток, который имеет дело с запросом доступа UAC в пакетном файле windows: как запросить администратора доступ внутри пакетного файла
Примечание.: ProcessBuilder может быть немного сложно справиться, используя StreamGobbler для обработки выходных данных для меня: обрабатывать вход с помощью StreamGobbler
для этого я использую командную строку в windows. В меню Пуск введите cmd в текстовом поле и когда программа cmd.exe появляется, щелкните правой кнопкой мыши на нем и выберите Запуск от имени администратора. Теперь, когда вам, выполнить java-jar он будет работать с правами администратора.
я объясню, как вы получаете повышенное java-приложение
import java.io.IOException;
public class RunAsAdminExample {
public static void main(String[] args) throws IOException {
Process myappProcess = Runtime.getRuntime().exec("powershell.exe Start-Process <program.exe> -verb RunAs");
}
}
чем вы можете видеть повышенную java с аргументом:)
лучшие привет!
доступ к java.exe и javaw.exe внутри папки установки. я.электронные файлы C:\Program \Ява\jre7\bin или C:\Program файлы\папку Java\jdk1.7.\0_17 ОГРН щелкните их левой кнопкой мыши и выберите Свойства - >совместимость и там: установите флажок "выполнять эту программу от имени администратора".