Java - Выполнение exe с правами администратора

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

Что я пытаюсь сделать? - Наряду с моим Java-файлом у меня есть исполняемый файл (например, давайте использовать config.exe), который требует повышенных прав для запуска.

После того, как пользователь нажимает на кнопку, как я могу выполнить этот файл?

РЕДАКТИРОВАТЬ: я просто нашел другой способ сделать это. Я сделал exe из своего jar-файла, зашел на вкладку совместимости и проверил "Всегда запускать от имени администратора". Спасибо за вашу помощь.

2 ответа

Решение

Прежде всего найдите каталог, в котором находится исполняемый файл. Затем создайте текстовый файл с именем как

"Your_Exe_File_Name".exe.manifest

Просто поместите приведенное ниже содержимое в файл и сохраните его.

  <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <assemblyIdentity version="1.1.1.1"
   processorArchitecture="X86"
   name="MyApp.exe"
   type="win32"/>
  <description>elevate execution level</description>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
  <security>
   <requestedPrivileges>
    <requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
   </requestedPrivileges>
  </security>
  </trustInfo>
 </assembly>

Теперь используйте это в своем Java-коде для вызова exe. Он будет автоматически вызываться с правами администратора.

Process process = new ProcessBuilder("C:\\PathToExe\\MyExe.exe","param1","param2",).start();
InputStream is = process.getInputStream();//Get an inputstream from the process which is being executed
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);//Prints all the outputs.Which is coming from the executed Process
}

Я думаю, что это будет полезно для вас.

Видя, как вы пытаетесь запустить exe файл, я предполагаю, что это Windows.

Стандартным способом выполнения внешних команд в Java является .exec команда:

Runtime.getRuntime().exec("path\to\config.exe");

Теперь, чтобы получить config.exe чтобы запустить от имени администратора, вам нужно настроить его на запуск с правами администратора из Windows. Щелкните правой кнопкой мыши файл в проводнике и выберите Properties, Выберите Compatibility вкладка и проверка Run this program as administrator возле дна. Теперь, когда программа запускается, перед запуском она запрашивает повышенные привилегии.

Другие вопросы по тегам