13

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

4

4 回答 4

10
  Runtime.getRuntime().exec("runas /profile /user:Administrator \"cmd.exe /c Powrprof.dll,SetSuspendState\"");

也请看评论

以没有管理员权限的管理员身份运行

于 2013-01-30T04:22:21.360 回答
9

你有几个选择

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 进程将需要管理员权限(如 B),但您不必生成进程。如果你喜欢这个,我可以提供源代码。

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

于 2013-01-30T04:50:36.310 回答
6

添加参数/savecred

runas /profile /user:Administrator /savecred

输入密码一次。将来操作系统不会询问您的密码。

于 2014-01-13T13:14:56.907 回答
0

我正在使用 Windows 10。IDK 为什么但runas无法正常工作并且没有报告任何错误。

我在superuser.com上找到了这个答案

    powershell -Command "Start-Process 'cmd.exe /c Powrprof.dll,SetSuspendState ' -Verb runAs"
  • 如果您有权提升,则无需密码。
  • 客户端机器上不需要快捷方式
  • 不依赖于runas
  • 需要powershell

根据serverfault.com上的答案,Powershell 自 Windows 8 和 Windows Server 2008 R2 以来默认安装在 Windows 上。

于 2019-10-16T18:28:18.727 回答