Относительный путь в ярлыке
Ярлыки в Windows используют абсолютные пути. То есть вроде бы, как-то, вооружившись идеальным английским и накачанным виагрой напильником для реестра, можно заставить их понимать пути относительные. По слухам. Но реальность такова, что использовать ярлыки на флешке, или в какой-то структуре папок, которая может менять свое местоположение, нельзя. Это понятно: если мы задали путь E:\папка, а на другом компьютере наш флеш-драйв поимел букву диска уже M, то путь неверен, и ничего тут не попишешь.
Какие решения? Их, в общих чертах, два: использовать сторонние лончеры или командные файлы. Первое решение недостаточно гибко, да и не встречал я еще лончера, такого, чтобы ах, а второе… Не терплю мигающие окна, которые неизбежно порождает интерпретатор cmd.exe. Неаккуратненько как-то. Можно и этот риф обойти, но опять громоздить сторонние программы, опять в гамаке и стоя. Ах, да — есть еще vb и js скрипты. Да, это посимпатичней. Но все-таки.
Однако человеческий гений, как известно, не только гнет взглядом сталь, но, поднатужившись, может даже воздерживаться от алкоголя весь вечер. Решение состоит в вызове функции соответствующей библиотеки. Поскольку библиотеки (dll) сами по себе из командной строки не вызываются, следует использовать команду (имя программы, на самом деле) rundll32. То есть вы создаете обычный ярлык, в строке запуска (поле Объект в свойствах) которого пишете строку вида: %windir%\system32\RunDll32.exe shell32.dll,ShellExec_RunDLL ".\папка\файл". Обратите внимание на точку перед первым слешем. Обязательно оставьте поле Рабочая папка пустым, и путь будет читаться относительно положения самого ярлыка. Напоминаю, что для перехода в родительскую папку вместо одной точки в начале надо ставить две, “..\..\” — на два уровня вверх и так далее.
Есть вероятность, что могут возникнуть проблемы у пользователей с урезанными правами, не проверял. Сообщите, если да.
Громадное спасибо. Дико не нравилось вызывать батники!!!
Comment by Иван — Thursday, January 17, 2008 @ 08:16
+1 (=
Спасибо.Хорошая статья
Comment by rtyy — Friday, May 16, 2008 @ 14:08