在Java中执行.lnk文件
我需要在java中执行.lnk文件(指向exe文件的lnk文件)。我该怎么办?
在 vb .net 中,我这样做了
Process.Start(path)
,它可以工作,
谢谢你的帮助。
i need to execute a .lnk file in java (lnk file that points at an exe file). how can i do?
in vb .net i do
Process.Start(path)
and it works
thx you for help.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
使用 ProcessBuilder:
调用
process .getInputStream()
和process.getErrorStream()
用于读取进程的输出和错误输出。Use a ProcessBuilder:
Call
process.getInputStream()
andprocess.getErrorStream()
to read the output and error output of the process.在 Windows 上,您可以使用
rundll
:On Windows, you could use
rundll
:Java 不支持操作系统特定功能,但 java.awt.Desktop.open 应该支持。
Java has no support for OS specific features, but java.awt.Desktop.open should do.
或者您可以使用 ProcessBuilder...但它需要实际 rundll32 的路径。
我做到了,同时尝试对我的小“分层发送到”应用程序中的一个奇怪的错误进行排序。
(我讨厌Windows,后XP“扁平化”,“发送到”选项中的链接指向一个愚蠢的列表;作为一棵树,我可以更好地导航我在系统上使用的四十多个小选项)
下面是调用链接(或任何类型的文件)的操作代码:
然而,通过 Java 调用 Windows .lnk 的整个过程可能会产生相当混乱的结果。
直接链接到 x.jar 可能会使用系统 Java VM 打开该 jar,但直接链接到已安装的 jre/bin/javaw.exe -jar "x.jar" 可能会失败,并显示“Windows 无法找到该文件” “ 信息。
这,而另一个以完全相同的方式调用的 jar 将完美执行。
不过,我可能必须查看 .lnk 的备用流,因为其中一些是我的旧电脑的副本......
Or you can use ProcessBuilder... but it will need a path to the actual rundll32.
I did it, while trying to sort an odd bug in my little "Hierarchic Send to" app.
(I hate that windows, post-XP "flatten", the links in the "Send to" option to a stupid list; as a tree, I could navigate better the forty odd small options that I use on my system )
Here is the code of the action calling a link (or whatever type of file):
However, the whole shenhanigan of calling a windows .lnk through Java can give pretty confusing results.
A direct link to x.jar may open the jar with the system Java VM, but a direct link to installed jre/bin/javaw.exe -jar "x.jar" may fail, with a "Windows can't locate the file" message.
This, while another jar called the exact same way will execute flawessly.
Though, I might have to look at the alternate streams of the .lnk, as some are copies from my old PC...