如何通过java在执行cmd时输入密码

如何通过java在执行cmd时输入密码,java,cmd,runas,Java,Cmd,Runas,我想编写一个java程序来检索在不同服务器上运行的所有服务的状态(大约20个)。为此,我使用SC命令,我可以使用java程序来实现。但是现在我陷入了这样一种情况:我想使用RUNAS以不同的用户身份运行SC命令,我面临的问题是,一旦命令第一次执行,我就无法输入密码。以下是我正在使用的代码:- String[] command = new String[3]; command[0] = "cmd"; command[1] = "/c";

我想编写一个java程序来检索在不同服务器上运行的所有服务的状态(大约20个)。为此,我使用SC命令,我可以使用java程序来实现。但是现在我陷入了这样一种情况:我想使用RUNAS以不同的用户身份运行SC命令,我面临的问题是,一旦命令第一次执行,我就无法输入密码。以下是我正在使用的代码:-

        String[] command = new String[3];
        command[0] = "cmd";
        command[1] = "/c";
        command[2] = "runas /noprofile /user:domain\\admin \"sc \\\\serverName queryex type= service state= all\"";

        Process p = Runtime.getRuntime().exec(command);

        PrintWriter writer = new PrintWriter(new OutputStreamWriter(new BufferedOutputStream(p.getOutputStream())), true);

        BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
        String line = reader.readLine();

        while (line != null) {

            new PrintWriter(p.getOutputStream(),true).println("AdminPassword");

            System.out.println(line);
            line = reader.readLine();
        }

        BufferedReader stdInput = new BufferedReader(newInputStreamReader(p.getInputStream()));

        BufferedReader stdError = new BufferedReader(new InputStreamReader(p.getErrorStream()));

        String Input;
        while ((Input = stdInput.readLine()) != null) {
            System.out.println(Input);
        }            

        String Error;
        while ((Error = stdError.readLine()) != null) {
            System.out.println(Error);
        }
但我无法打印所有服务的状态。我不确定在提供密码后是否需要捕获其他流

有什么帮助吗

感谢在
的while(line!=null)
循环中,您可以为阅读的每一行打开一个新的PrintWriter。您向这些写入程序打印管理员密码,但从不关闭或刷新它们

尝试上面创建的
PrintWriter编写器
,并在写入密码后执行
flush()
操作,否则它仍将位于缓冲区中

您还可以在进程的inputStream上创建几个可能相互干扰的
BufferedReader


所以:只创建一个reader resp。编写程序的inputStream、errorStream和outputStream。

Hi Thomos,感谢您的回复,我已将printwriter代码带出循环(之前)并刷新和关闭,但结果仍然相同。安全问题可能会影响您,这里的大多数答案可能是:如果您通过命令行提供凭据,在使用任务管理器或类似工具查看流程列表时,它们可能以纯文本形式提供。