在Java中执行文件.lnk

时间:2011-01-20 16:22:03

标签: java shell process command execute

我需要在java中执行.lnk文件(指向exe文件的lnk文件)。我该怎么办?

在vb .net中我做

Process.Start(path)

并且有效

求你帮忙。

4 个答案:

答案 0 :(得分:6)

使用ProcessBuilder

ProcessBuilder pb = new ProcessBuilder("cmd", "/c", "C:\\temp\\file.lnk");
Process process = pb.start();

调用process.getInputStream()process.getErrorStream()来读取进程的输出和错误输出。

答案 1 :(得分:1)

在Windows上,您可以使用rundll

Runtime.getRuntime().exec("rundll32 SHELL32.DLL,ShellExec_RunDLL " +  
    "\Path\to\File.lnk");

答案 2 :(得分:0)

Java不支持特定于操作系统的功能,但java.awt.Desktop.open应该这样做。

答案 3 :(得分:0)

或者您可以使用ProcessBuilder ...但它需要一个实际rundll32的路径。 我做了它,同时试图在我的小" Hierarchic Send to"中排序一个奇怪的bug。应用

(我讨厌那些Windows,后XP和#34;扁平","发送到#34;选项到愚蠢列表中的链接;作为树,我可以导航更好的是我在我的系统上使用的四十多个小选项)

以下是调用链接(或任何类型的文件)的操作代码:

{{1}}

然而,通过Java调用windows .lnk的整个shenhanigan会给出相当混乱的结果。

到x.jar的直接链接可以打开带有系统Java VM的jar,但是直接链接到已安装的jre / bin / javaw.exe -jar" x.jar"可能会失败,使用" Windows无法找到文件"消息。

这个,虽然另一个叫做完全相同的jar会执行错误。

尽管如此,我可能需要查看.lnk的备用流,因为有些是来自旧PC的副本......