次の行は、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アプリケーションにネットワークメッセージを送信させる方法はありますか?または、機能するネットワークメッセージを送信するための代替手段はありますか?