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
возле дна. Теперь, когда программа запускается, перед запуском она запрашивает повышенные привилегии.