Сделаем это быстро



Блог переехал на doitq.ru



Tuesday, January 23, 2007

Относительный путь в ярлыке

Ярлыки в Windows используют абсолютные пути. То есть вроде бы, как-то, вооружившись идеальным английским и накачанным виагрой напильником для реестра, можно заставить их понимать пути относительные. По слухам. Но реальность такова, что использовать ярлыки на флешке, или в какой-то структуре папок, которая может менять свое местоположение, нельзя. Это понятно: если мы задали путь E:\папка, а на другом компьютере наш флеш-драйв поимел букву диска уже M, то путь неверен, и ничего тут не попишешь.

Какие решения? Их, в общих чертах, два: использовать сторонние лончеры или командные файлы. Первое решение недостаточно гибко, да и не встречал я еще лончера, такого, чтобы ах, а второе… Не терплю мигающие окна, которые неизбежно порождает интерпретатор cmd.exe. Неаккуратненько как-то. Можно и этот риф обойти, но опять громоздить сторонние программы, опять в гамаке и стоя. Ах, да — есть еще vb и js скрипты. Да, это посимпатичней. Но все-таки.

Однако человеческий гений, как известно, не только гнет взглядом сталь, но, поднатужившись, может даже воздерживаться от алкоголя весь вечер. Решение состоит в вызове функции соответствующей библиотеки. Поскольку библиотеки (dll) сами по себе из командной строки не вызываются, следует использовать команду (имя программы, на самом деле) rundll32. То есть вы создаете обычный ярлык, в строке запуска (поле Объект в свойствах) которого пишете строку вида: %windir%\system32\RunDll32.exe shell32.dll,ShellExec_RunDLL ".\папка\файл". Обратите внимание на точку перед первым слешем. Обязательно оставьте поле Рабочая папка пустым, и путь будет читаться относительно положения самого ярлыка. Напоминаю, что для перехода в родительскую папку вместо одной точки в начале надо ставить две, “..\..\” — на два уровня вверх и так далее.

Есть вероятность, что могут возникнуть проблемы у пользователей с урезанными правами, не проверял. Сообщите, если да.

Комментарии (9) »

URI для TrackBack этой записи:
http://doitq.blogsome.com/2007/01/23/p118/trackback/

  1. Громадное спасибо. Дико не нравилось вызывать батники!!!

    Comment by Иван — Thursday, January 17, 2008 @ 08:16

  2. +1 (=
    Спасибо.Хорошая статья

    Comment by rtyy — Friday, May 16, 2008 @ 14:08

  3. А со значком как быть?((

    Comment by Дмитриш — Thursday, January 22, 2009 @ 15:48

  4. http://doitq.ru/2007/01/23/otnositelnyiy-put-v-yarlyike/ - здесь выяснили, что никак

    Comment by Павел Рындин — Thursday, January 22, 2009 @ 16:04

  5. Сделал. Получилось. Только одна неприятность - новая папка отркывается в новом окне. Можно это побороть?
    К сожалению, нет галочки “уведомлять об ответах”. Если не трудно будет - маякните, если кто даст хороший совет. Сам заходить тоже буду, но не знаю, насколько систематично.
    Спасибо.

    Comment by Взводатор — Saturday, February 28, 2009 @ 21:24

  6. И еще одна неприятность - в проводнике ярлык виден, но когда вызываю из браузера (FF, IE, Opera), то этого ярлыка нет.

    Comment by Взводатор — Saturday, February 28, 2009 @ 21:34

  7. все намного проще:
    %windir%explorer.exe “.”
    поле ‘Рабочая папка’ также должно быть пустым
    такой способ точно работает в ущербных учетках)
    ________
    *путь - путь к файлу или папке относительно местонахождения ярлыка,
    например: %windir%explorer.exe “.myFolderInfiuminfium.exe”
    (мой личный метод - портативная QIP Infium c настройкой ‘Автоопределение настроек проски’ - работает везде - не нужно админских прав для установки и прокси настраивать не надо, даже если пароль нужен, проверено) так что, если кому надо, обращайтесь)

    Comment by littleleshy — Saturday, March 28, 2009 @ 21:58

  8. чет глюки с отображением слешей и т. д.
    сделаем так:
    вот оно:
    %windir%explorer.exe ".[объект]"
    пример:
    %windir%explorer.exe ".myFolderInfiuminfium.exe"

    Comment by littleleshy — Saturday, March 28, 2009 @ 22:03

  9. все равно слешей нету… что за … ?

    Comment by littleleshy — Saturday, March 28, 2009 @ 22:04

RSS feed комментариев к этому посту.

Оставить комментарий

Текст на строки и абзацы разбиватся автоматически, e-mail адрес не отображается,
из арсенала HTML разрешены:
<a href="" title=""> <abbr title=""> <acronym title=""> <b>
<blockquote cite=""> <code> <em> <i> <strike> <strong>