我正在开发一个小型关机调度程序项目,我必须将计算机置于"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。
答案 0 :(得分:10)
Runtime.getRuntime().exec("runas /profile /user:Administrator \"cmd.exe /c Powrprof.dll,SetSuspendState\"");
另外请参阅评论
答案 1 :(得分:9)
您有几个选择
一个。使用admin priv。
创建快捷方式快捷方式将运行cmd /c Rundll32.exe Powrprof.dll,SetSuspendState
您的Java代码将运行快捷方式:
Runtime rt = Runtime.getRuntime();
rt.exec("cmd /c start \"\" \"myshortcut.lnk\"")
右键单击快捷图标>属性>高级>以管理员身份运行
B中。以管理员身份运行java进程
再次,创建一个快捷方式并设置为以管理员身份运行。生成的任何进程也将具有管理员权限。您的Java代码将运行:
rt.exec("cmd /c Powrprof.dll,SetSuspendState")
℃。使用JNA直接调用SetSuspendState例程。 Java进程将需要admin priv(如B),但您不必生成进程。如果你喜欢这个,我可以提供源代码。
d。 使用wizmo实用程序:wizmo quiet standby
答案 2 :(得分:6)
添加参数/savecred
runas /profile /user:Administrator /savecred
输入密码一次。将来,OS不会要求您提供密码。
答案 3 :(得分:0)
我正在使用Windows10。IDK为什么runas
不起作用,并且没有报告任何错误。
我在superuser.com 上找到了这个答案:
powershell -Command "Start-Process 'cmd.exe /c Powrprof.dll,SetSuspendState ' -Verb runAs"
runas
powershell
根据serverfault.com上的回答,自Windows 8和Windows Server 2008 R2起,默认情况下Windows上已安装Powershell。