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



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



Tuesday, January 23, 2007

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

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

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

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

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

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

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

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

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

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