Java: Запуск от имени администратора

есть ли способ в Java попросить систему получить контроль над функциональностью администратора. Конечно, без этого: щелкните правой кнопкой мыши на exe - > run as admin.
Я хочу, чтобы был кадр из UAC, как в Windows Vista или Windows 7.

или я должен сделать некоторые настройки при создании exe из банки?

8 ответов


необходимо создать файл манифеста, указывающий, что приложению требуются права администратора. Вы можете включить манифест в свой exe или сохранить его как отдельный файл (yourapp.исполняемый.манифест)

http://msdn.microsoft.com/en-us/library/bb756929.aspx


самый простой способ-использовать оболочку для запуска 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 ОГРН щелкните их левой кнопкой мыши и выберите Свойства - >совместимость и там: установите флажок "выполнять эту программу от имени администратора".