以Administrator身份运行命令提示符

时间:2013-01-30 04:15:58

标签: java command-line command-prompt

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

答案 0 :(得分:10)

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

另外请参阅评论

Running as admin without Admin rights

答案 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。