我需要在java中执行.lnk文件(指向exe文件的lnk文件)。我该怎么办?
在vb .net中我做
Process.Start(path)
并且有效
求你帮忙。
答案 0 :(得分:6)
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的副本......