如何在Windows 7 64位上从java应用程序运行msg.exe(或替代程序)



以下行在我的Windows XP java应用程序中运行良好:

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

当它在Windows7(64位)上执行时,我得到以下错误:

无法运行程序"msg.exe":CreateProcess错误=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的读取和执行权限。

我能够从Windows7机器的命令行成功地运行该命令(作为java进程的同一用户)。

在这篇文章的注释中:C#找不到指定的文件,有人暗示了一个类似的问题,即Windows 64位计算机没有从C#程序中找到msg.exe,所以也许在Windows配置方面我需要做一些事情?

有没有办法让java应用程序在Windows7上发送网络消息?或者发送一条有效的网络消息的替代方案?

您可能安装了32位Java,这不允许在Windows7上启动64位程序。如果安装了32位Java,请升级到64位Java,然后重试。

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

最新更新