1

次の行は、WindowsXP上のJavaアプリケーションから正常に機能します。

Process p = Runtime.getRuntime().exec("msg.exe * this is a test");  

Windows 7(64ビット)で実行すると、次のエラーが発生します。

プログラム"msg.exe"を実行できません:CreateProcess error = 2、システムは指定されたファイルを見つけることができません

.exeへのフルパスを入力しようとしましたが、同じエラーが発生します。

Process p = Runtime.getRuntime().exec("c:\\Windows\\System32\\msg.exe * this is a test");

ランタイムの代わりにProcessBuilderを使用すると、同じエラーが発生します。

Process p = new ProcessBuilder("msg.exe * this is a test").start();

一時的にすべてのユーザーにmsg.exeへのフルコントロールを与えることでアクセス許可の問題を除外しようとしましたが、Windowsでは許可されませんでした。管理者としてログインしてもオプションがグレー表示されていました。

そこで、Javaプロセスのユーザーがmsg.exeへの読み取りおよび実行権限を持っていることを確認しました。

Windows 7マシンのコマンドラインから(javaプロセスの同じユーザーとして)コマンドを正常に実行できます。

この投稿のメモ:C#は指定されたファイルを見つけることができません、誰かがWindows 64ビットマシンがC#プログラムからmsg.exeを見つけられないという同様の問題をほのめかしているので、おそらくWindows構成側に何かが必要です行う?

Windows 7でJavaアプリケーションにネットワークメッセージを送信させる方法はありますか?または、機能するネットワークメッセージを送信するための代替手段はありますか?

4

2 に答える 2

1

32ビットJavaがインストールされている可能性がありますが、Windows 7で64ビットプログラムを起動することはできません。32ビットJavaがインストールされている場合は、64ビットJavaにアップグレードしてから再試行してください。

于 2012-07-27T15:13:48.307 に答える
0

してみてください:new ProcessBuilder("msg.exe", "* test").start()

于 2012-07-27T15:21:49.323 に答える