2

統合テストから、Windows (WindowsXP 32 ビット) で外部プロセスを強制終了する必要があります。「taskkill.exe」を使用するだけだと思っていましたが、機能していないようです。基本的に、Java から「taskkill.exe」プロセスを開始するたびに、終了値 -1073741515 が返され、std エラー/出力には何も出力されません。

問題を再現するために、次の簡単なアプリケーションを作成しました。

public static void main(String[] args) throws Exception {
    ProcessBuilder builder = new ProcessBuilder();
    //In my real code, I kill process by its pid. However below also shows the problem:
    builder.command("taskkill.exe", "/?");
    builder.redirectErrorStream(true);
    Process p = builder.start();
    BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream()));
    String line = r.readLine();
    System.out.println("out:");
    while(line != null) {
        System.out.println(line);
        line = r.readLine();
    }
    System.out.println(p.waitFor());
}

その他のデータ ポイント:

  • -1073741515 は明らかに「アプリケーションを正しく初期化できませんでした」という意味です。私にとってはあまり役に立ちませんが;)
  • taskkill.exe パラメータの組み合わせをたくさん試しました。コマンドの前に「cmd」、「/c」を付けてみました。症状は全く同じ
  • windows\system32 の下にある他の Windows プログラムを実行しようとしましたが、-10737 も表示されます...
  • 「dir」や「echo」などを実行しても問題ありません。

何が問題なのかについてのヒントはありますか?

4

1 に答える 1

0

別のユーザーとしてアプリケーションを実行してみましたか?Windowsでプレーンバッチファイルを使用してアプリを実行している場合は、右クリックして選択Run as administratorし、結果を確認します。実行しているアカウントには、ネイティブアプリを実行するための十分な権限がない可能性があります。

于 2012-09-21T17:19:40.037 に答える