2

我目前正在尝试查看是否可以在 Java 中从 powershell 运行 windows (.lnk) 文件中的程序快捷方式。我知道有更好的工具可以使用,我应该直接与 .exe 交互,但请幽默,这是出于测试目的。

所以本质上,我需要通过 java 的 powershell 运行 .lnk 文件。我目前遇到的主要困境是应该在powershell中工作的命令

"start \"C:/Adobe Reader X.lnk\""

在 IDE 中,这将正确运行 Adob​​e 阅读器,但在 java 中,在初始化 ProcessBuilder 并尝试传递此参数后,它不起作用。但是,它将运行 powershell 进程。这是我传递给我的方法的代码:

String[] command2 = { /*"cmd.exe", "/C",*/ "powershell", "-Command","&","start \"C:/Adobe Reader X.lnk\"" };

如您所见,我也尝试过从 CMD 启动它。这是我的运行代码。我阅读了输出(没有输出)我只是想在一个线程中启动 Adob​​e Reader,然后我可以通过 Tasklist 检查进程是否正在运行。

public void run() {
            String line2;
            ProcessBuilder probuilder = new ProcessBuilder(command);
            Process process = null;
            try {
                process = probuilder.start();
            } catch (IOException e2) {
                // TODO Auto-generated catch block
                e2.printStackTrace();
            }


            java.io.InputStream is = process.getInputStream();
            InputStreamReader isr = new InputStreamReader(is);

            BufferedReader br = new BufferedReader(isr);
            // create a reader for the return data from cmd.
            StringBuilder sb = new StringBuilder();
            // create a string builder to automate the string addition 

            try {
                while ((line2 = br.readLine()) != null) {// build the input
                                                            // string from
                                                            // cmd.

                    sb = sb.append(line2);
                    System.out.println(line2);
                }
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

        }

通过这个之后,我只是让 powershell 进程运行,但是 Adob​​e reader 没有运行,甚至没有启动。任何帮助将不胜感激。

4

0 回答 0