Запустить командную строку в качестве администратора

Я разрабатываю небольшой проект планировщика выключения, в котором я должен поместить компьютер в режим "Stand By". Команда, которую я использую,

Runtime.getRuntime().exec("cmd /c Powrprof.dll,SetSuspendState ");

Эта команда требует прав администратора, которые я не знаю, как их получить. Также при поиске предыдущих ответов я нашел, что могу использовать elevate.exe как

Runtime.getRuntime().exec("c:/elevate Rundll32.exe Powrprof.dll,SetSuspendState ");

elevate.exe выполняет задачу, но потребляет слишком много времени, то есть делает программное обеспечение медленным. Есть ли другой быстрый способ? Я использую Netbeans IDE.

Ответ 1

У вас есть несколько вариантов

а. Создайте ярлык с правами администратора.

В ярлыке будет cmd /c Rundll32.exe Powrprof.dll,SetSuspendState

В вашем Java-коде будет запущен ярлык:

Runtime rt = Runtime.getRuntime();
rt.exec("cmd /c start \"\" \"myshortcut.lnk\"")

Щелкните правой кнопкой мыши значок ярлыкa > Свойствa > Дополнительно > запустите как администратор

В. Запустите java-процесс как администратор

Снова создайте ярлык и настройте его как администратора. У всех процессов, которые были созданы, также будут привилегии администратора. Ваш java-код будет запущен:

rt.exec("cmd /c Powrprof.dll,SetSuspendState")

С. Используйте JNA для прямого вызова процедуры SetSuspendState. Для процесса Java потребуется admin priv (например, B), но вам не придется запускать процесс. Если вам это нравится, я могу предоставить исходный код.

Д. Используйте wizmo утилита: wizmo quiet standby

Ответ 3

Добавить параметр /savecred

runas /profile /user:Administrator /savecred

Введите пароль один раз. В будущем ОС не будет запрашивать у вас пароль.

Ответ 4

Я использую Windows 10. IDK почему, но runas не работает и не сообщает об ошибках.

Я нашел этот ответ на superuser.com:

    powershell -Command "Start-Process 'cmd.exe /c Powrprof.dll,SetSuspendState ' -Verb runAs"
  • Пароль не требуется, если у вас есть разрешение на повышение.
  • На клиентском компьютере ярлыки не требуются
  • Нет зависимости от runas
  • Требуется powershell

Powershell устанавливается по умолчанию в Windows начиная с Windows 8 и Windows Server 2008 R2, согласно ответу, найденному на serverfault.com.