一尘不染

以管理员身份运行命令提示符

java

我正在开发一个小型关机计划程序项目,在该项目中,我必须将计算机置于"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。


阅读 226

收藏
2020-09-08

共1个答案

一尘不染

您有几种选择

A.使用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")

C.使用JNA直接调用SetSuspendState例程。Java进程将需要admin
priv(例如B),但是您不必生成一个进程。如果您愿意,我可以提供源代码。

D. 使用 wizmo实用程序wizmo quiet standby

2020-09-08