2

私は現在、Windows (.lnk) ファイルでプログラムのショートカットを PowerShell から Java 内で実行できるかどうかを確認しようとしています。使用するより良いツールがあり、.exe を直接操作する必要があることはわかっていますが、これはテスト目的のためです。

したがって、基本的には、Java から powershell を介して .lnk ファイルを実行する必要があります。私が現在抱えている主な苦境は、powershell内から機能するはずのコマンド

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

IDE ではこれにより Adob​​e Reader が正しく実行されますが、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 プロセスを実行するだけですが、Adobe Reader は実行されず、起動さえしません。どんな助けでも大歓迎です。

4

0 に答える 0