2014-04-23 108 views
0

在Java(以及可能的.NET和其他平台)中执行Windows快捷方式时,现有快捷方式的执行没有问题,但新快捷方式无法执行,无论设置,权限,工作目录,快捷方式目标的内容,位置快捷方式,目标位置或任何与快捷方式相关的设置。现有快捷方式的Shell执行工作正常,但执行新快捷方式失败。为什么?

作为参考,有问题的代码如下,虽然问题的范围很可能更宽和陌生人比这个特定的代码意味着:

// Replace <SomeWindowsShortcut.lnk> with an actual shortcut name. 
// Shortcuts are implemented as a file with the hidden extension "lnk" 
String command = String command = "CMD /C start data\\<SomeWindowsShortcut.lnk>"; 
Runtime.getRuntime().exec(command); 

什么可能导致此不兼容,如何解决?

回答

0

Windows 7和Windows XP似乎生成轻微不兼容的文件快捷方式。

搁置一会儿两个shell执行(任何类型)的优雅和Windows快捷方式的程序化执行。

一些故障排除后,原来的Windows XP生成的快捷方式的执行成功,而那些创建在Windows 7中修改(可能是Vista和其他版本)产生错误“找不到路径”。

这两个快捷键的二进制内容是不同的,但没有对这些差异进行全面分析。

快速解决方案是在Windows XP中创建必要的快捷方式。 长期而不太可怕的解决方案是完全消除快捷方式的使用。

我很好奇关于快捷方式之间shell执行不兼容的详细信息。