【发布时间】:2020-11-12 15:12:01
【问题描述】:
我试图执行Runtime.getRuntime().exec("taskkill /PID ... /F");,但我一直在错误流上获得权限被拒绝。我知道它通常需要以 root 身份打开 cmd,但我想知道是否有办法通过代码来实现这一点(在 Windows 中,比如在开头添加 sudo)。
【问题讨论】:
我试图执行Runtime.getRuntime().exec("taskkill /PID ... /F");,但我一直在错误流上获得权限被拒绝。我知道它通常需要以 root 身份打开 cmd,但我想知道是否有办法通过代码来实现这一点(在 Windows 中,比如在开头添加 sudo)。
【问题讨论】:
我建议你在 Windows 中使用 runas 功能。
Runas 允许用户以不同的方式运行特定的工具和程序 比用户当前登录提供的权限。
请尝试以下方法:
Runtime.getRuntime().exec("cmd /c \"runas /savecred /user:theDomain\\administrator yourCommand\"")
【讨论】:
您可以使用管理员权限打开 CMD,也可以使用管理员权限运行您的 Java 程序。调用 shell 时,它应该继承这些权限并能够以管理员权限执行。
【讨论】: