Shell执行现有快捷方式有效,但执行新快捷方式失败.为什么?



在Java(可能还有.NET和其他平台)中执行Windows快捷方式时,执行现有快捷方式不会出现问题,但无论设置、权限、工作目录、快捷方式目标的内容、快捷方式的位置、目标的位置或任何与快捷方式相关的设置如何,新的快捷方式都无法执行。

作为参考,下面是有问题的代码,尽管问题的范围可能比这个特定代码所暗示的更广、更奇怪:

// 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);

是什么原因导致了这种不兼容?我该如何解决?

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

暂时抛开Windows快捷方式的shell执行(任何类型)和程序执行的不雅。

经过一些故障排除,Windows XP生成的快捷方式执行成功,而在Windows 7(可能是Vista和其他版本)中创建的修改的快捷方式则产生了"未找到路径"错误。

两种快捷方式的二进制内容不同,尽管没有对这些差异进行全面分析。

快速解决方案是在Windows XP中创建必要的快捷方式。一个长期且不那么可怕的解决方案是完全消除捷径的使用。

我很好奇有关快捷方式之间shell执行不兼容的细节的任何信息。

最新更新