Относительный путь в ярлыке
Ярлыки в 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
А со значком как быть?((
Comment by Дмитриш — Thursday, January 22, 2009 @ 15:48
http://doitq.ru/2007/01/23/otnositelnyiy-put-v-yarlyike/ - здесь выяснили, что никак
Comment by Павел Рындин — Thursday, January 22, 2009 @ 16:04
Сделал. Получилось. Только одна неприятность - новая папка отркывается в новом окне. Можно это побороть?
К сожалению, нет галочки “уведомлять об ответах”. Если не трудно будет - маякните, если кто даст хороший совет. Сам заходить тоже буду, но не знаю, насколько систематично.
Спасибо.
Comment by Взводатор — Saturday, February 28, 2009 @ 21:24
И еще одна неприятность - в проводнике ярлык виден, но когда вызываю из браузера (FF, IE, Opera), то этого ярлыка нет.
Comment by Взводатор — Saturday, February 28, 2009 @ 21:34
все намного проще:
%windir%explorer.exe “.”
поле ‘Рабочая папка’ также должно быть пустым
такой способ точно работает в ущербных учетках)
________
*путь - путь к файлу или папке относительно местонахождения ярлыка,
например: %windir%explorer.exe “.myFolderInfiuminfium.exe”
(мой личный метод - портативная QIP Infium c настройкой ‘Автоопределение настроек проски’ - работает везде - не нужно админских прав для установки и прокси настраивать не надо, даже если пароль нужен, проверено) так что, если кому надо, обращайтесь)
Comment by littleleshy — Saturday, March 28, 2009 @ 21:58
чет глюки с отображением слешей и т. д.
сделаем так:
вот оно:
%windir%explorer.exe ".[объект]"пример:
%windir%explorer.exe ".myFolderInfiuminfium.exe"Comment by littleleshy — Saturday, March 28, 2009 @ 22:03
все равно слешей нету… что за … ?
Comment by littleleshy — Saturday, March 28, 2009 @ 22:04