【发布时间】:2017-06-01 16:50:28
【问题描述】:
我正在尝试使用进程生成器运行 Windows 命令。我不确定为什么它以 1 退出,因为我觉得我给出了正确的输入。如果有人可以查看并指导我可能错在哪里,那就太好了?
try{
ProcessBuilder pb = new ProcessBuilder("runas","/noprofile","/user:alex", "cmd");
Process p = pb.start();
OutputStream os = p.getOutputStream();
PrintStream ps = new PrintStream(os);
ps.println("password");
ps.flush();
System.out.println(p.waitFor());
BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
String resultLine = in.readLine();
while (resultLine != null) {
System.out.println(resultLine);
resultLine = in.readLine();
}
}
catch (IOException e) {
e.printStackTrace();
}
输出:
1
输入alex的密码:
【问题讨论】:
-
检查错误流的错误输出
-
要轻松获取错误流,请将其重定向到带有
pb.redirectErrorStream(true)的标准输出。但是it might not be possible at all... 可能runas不接受来自标准输入的密码 -
我也试过这个。没运气。不知道为什么它返回 1 作为退出代码。
-
某人said here:“密码是从原始控制台设备读取的,根本不通过标准输入”。如果他是对的,那么您根本无法通过这种方式将密码传递给
runas。 -
哇。我不知道这是不是真的。我需要一些 windows 命令来使用用户名和密码进行验证。
标签: java windows processbuilder runas