如何从Windows 7 64位上的Java应用程序运行msg.exe(或替代方案)?

时间:2012-07-27 15:10:12

标签: java windows-7

以下行可以在我的Windows XP上的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而不是Runtime会产生同样的错误:

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

我试图通过暂时让所有人完全控制msg.exe来排除权限问题,但Windows不会让我 - 即使我以管理员身份登录,选项也会显示为灰色。

所以我确认java进程的用户具有对msg.exe的读取和执行权限。

我能够从Windows 7计算机的命令行成功运行该命令(作为java进程的同一用户)。

在这篇文章的注释中:C# cannot find file specified,有人提到类似的问题,Windows 64位机器没有从C#程序中找到msg.exe,所以Windows配置方面可能还有一些东西我需要去做?

有没有办法让Java应用程序在Windows 7上发送网络消息?或者一些替代方法,用于发送有效的网络消息?

2 个答案:

答案 0 :(得分:1)

您可能安装了32位Java,但不允许在Windows 7上启动64位程序。如果安装了32位Java,请升级到64位Java,然后重试。 / p>

答案 1 :(得分:0)

请尝试:new ProcessBuilder("msg.exe", "* test").start()