Оболочка выполнения существующих ярлыков работает, но выполнение новых ярлыков не выполняется. Зачем?
При выполнении ярлыка Windows в Java (и, возможно,.NET и других платформах) выполнение существующего ярлыка работает без проблем, но новые ярлыки не могут выполняться независимо от настроек, разрешений, рабочего каталога, содержимого целевого ярлыка, местоположения ярлык, местоположение цели или любой параметр, связанный с ярлыком.
Для справки приведен нижеприведенный код, хотя область действия проблемы, вероятно, шире и более странна, чем предполагает этот конкретный код:
// 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);
Что может вызвать эту несовместимость и как ее исправить?
1 ответ
Windows 7 и Windows XP создают слегка несовместимые ярлыки файлов.
Отложите на мгновение сложность как исполнения оболочки (любого вида), так и программного исполнения ярлыков Windows.
После некоторого устранения неполадок оказывается, что выполнение сгенерированных Windows XP ярлыков прошло успешно, тогда как те, которые были созданы или изменены в Windows 7 (возможно, Vista и других версиях), дали ошибку "путь не найден".
Двоичное содержание обоих ярлыков различно, хотя всестороннего анализа этих различий не проводилось.
Быстрое решение - создать необходимый ярлык в Windows XP. Более долгосрочное и менее ужасающее решение - полностью исключить использование ярлыков.
Мне любопытно любую информацию, касающуюся деталей несовместимости исполнения оболочки между ярлыками.