Запустить командную строку в качестве администратора
Я разрабатываю небольшой проект планировщика выключения, в котором я должен поместить компьютер в режим "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
Ответ 2
Runtime.getRuntime().exec("runas /profile /user:Administrator \"cmd.exe /c Powrprof.dll,SetSuspendState\"");
Также plz видит комментарии
Выполняется как администратор без прав администратора
Ответ 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.