Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 以管理员身份运行命令提示符_Java_Command Line_Command Prompt - Fatal编程技术网

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

Java 以管理员身份运行命令提示符,java,command-line,command-prompt,Java,Command Line,Command Prompt,我正在开发一个小型关机计划程序项目,在该项目中,我必须将计算机置于“待机”模式。我使用的命令是 Runtime.getRuntime().exec("cmd /c Powrprof.dll,SetSuspendState "); 这个命令需要管理员权限,我不知道如何获取。此外,在搜索以前的答案时,我发现我可以使用elevate.exe作为 Runtime.getRuntime().exec("c:/elevate Rundll32.exe Powrprof.dll,SetSuspendStat

我正在开发一个小型关机计划程序项目,在该项目中,我必须将计算机置于“待机”模式。我使用的命令是

Runtime.getRuntime().exec("cmd /c Powrprof.dll,SetSuspendState ");
这个命令需要管理员权限,我不知道如何获取。此外,在搜索以前的答案时,我发现我可以使用
elevate.exe
作为

Runtime.getRuntime().exec("c:/elevate Rundll32.exe Powrprof.dll,SetSuspendState ");
Elevate.exe
正在执行任务,但占用了太多时间,即使软件速度变慢。还有别的快捷方式吗?我正在使用Netbeans IDE

  Runtime.getRuntime().exec("runas /profile /user:Administrator \"cmd.exe /c Powrprof.dll,SetSuspendState\"");
另请参见评论

您有几个选择

A.使用管理员权限创建快捷方式

快捷方式将运行
cmd/c Rundll32.exe powrpof.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安静待机
添加参数
/savecred

runas /profile /user:Administrator /savecred

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

我使用的是Windows 10。IDK why but
runas
不起作用,也没有报告任何错误

我在上找到了这个答案:

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

从Windows 8和Windows Server 2008 R2开始,Powershell默认安装在Windows上。

Windows“关机”命令可能更适合您,因为它不需要管理员访问。休眠:关机/h@mikeslattery待机和休眠之间有区别,我想待机。@TechExchange runas/user:Administrator cmd.exe/c powrpof.dll,SetSuspendState需要输入我没有的管理员密码。@TechExchange我没有管理员帐户的任何密码,它要求输入密码。有时必须将用户指定为域\用户,如runas帮助文档(runas/?)中所示。使用这种方法或以管理员身份运行对我来说不起作用,在公司环境中,帐户可能具有管理员权限,如果没有,则无法获得管理员密码。在前一种情况下,命令仍然没有运行。在提升的访问级别中运行似乎是解决方案
rt.exec(“cmd/c start\”“myshortcut.lnk\”)
但我必须将快捷方式设置为
cmd/c Rundll32.exe powrpof.dll,setuspendstate
,但执行该命令需要很多时间。有什么方法可以提高执行速度吗?好的,还有一件事,如果我想在
setsuspendstate
中使用
sleep
选项,那么我必须将
休眠设置为off
。这将再次需要一个新的管理员快捷方式,因此需要两个弹出窗口来接受。有没有一种方法可以通过快捷方式或命令来完成这项任务?Wizmo工作得很好,它甚至有更多的高级选项。当使用快捷方式/lnk时,有没有办法获得命令的输出(在我的例子中是w32tm/query/configuration)?不幸的是,似乎不是这样