Я пытался запустить это Java-приложение:
public class Run_Process {
public static void main(String[] args) {
String myCommandIp = "netsh interface ip set address name=\"Ethernet\" static 192.168.0.4 255.255.255.0 192.168.0.1 1";
String myCommand2Dns = "netsh interface ipv4 add dnsserver \"Ethernet\" address=192.168.0.1 index=1";
runCommand(myCommandIp);
runCommand(myCommand2Dns);
}
static void runCommand(String command) {
try {
new ProcessBuilder(command.split(" ")).redirectError(ProcessBuilder.Redirect.INHERIT)
.redirectOutput(ProcessBuilder.Redirect.INHERIT).start();
} catch (Exception e) {
e.printStackTrace();
}
}
}
, но получаю:
The requested operation requires elevation(Run as administrator)
Как снова запустить мое приложение, запрашивая повышение с глаголом «запустить как»?Вот как я это сделал в Python.Однако мне нужна помощь, чтобы сделать это на Java.
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import ctypes, sys, subprocess
def is_admin():
try:
return ctypes.windll.shell32.IsUserAnAdmin()
except:
return False
if is_admin():
subprocess.call(['wmic', '/output:usracc.txt', 'useraccount', 'list', 'full', '/format:csv'])
else:
# Re-run the program with admin rights
ctypes.windll.shell32.ShellExecuteW(None, "runas", sys.executable, __file__, None, 1)
Об этом много раз спрашивали, но мне нужен конкретный пример для моего случая, потому что я нуб.
Iобъясню, почему это не дубликат связанного вопроса.Использование ярлыка не вариант.Я должен предположить, что пользователь не знает, как создать ярлык.Решения JNA
и wizmo
не объясняются. Здесь здесь написано, что:
Итак, в мире Java вам просто нужно делать именно то, что должны делать все остальные: снова запускать ваше приложение, запрашивая повышение прав.Существует несколько способов запуска с повышенными правами, глагол «запустить как», вероятно, самый простой.
Итак, я прошу помощи, как использовать решение с глаголом «запустить как» и ShellExecute в Java.