Мне надо изменить ссылку на объект, на который указывает ярлык в Windows 10. Но в этом ярлыке путь к рабочей папке содержится уже некорректный и система заставляет меня указать ещё и корректный путь к рабочей папке, чего я делать очень не хочу. Хочу оставить рабочую папку как есть и поменять лишь путь к исполняемому файлу.
Где Windows хранит пути ярлыков? В реестре? В файле ярлыка? Или где?
Есть ли сторонние программы, позволяющие на низком уровне получить доступ к этому пути и изменить его?
Это то что называется "текущий каталог" для запущенной программы.
Этот путь в принципе может быть любым. Правда, некоторые, криво написанные, программы правильно работают только при указании какого-то определенного текущего каталога (например каталога где лежит исполняемый файл). Правильная программа не должна зависеть от этого параметра своего реального окружения.
Не корректным этот путь может быть только если он физически не существует. Но и в этом случае винда сможет запустить программу с текущим каталогом видимо где-то в %SystemRoot%\system32
res2001, в том-то и дело, что там указан несуществующий путь.
А если указан несуществующий путь, то ты не сможешь внести другие правки в свойства этого ярлыка. Винда просто не позволит применить изменения...
А если указан несуществующий путь, то ты не сможешь внести другие правки в свойства этого ярлыка. Винда просто не позволит применить изменения...
Есть такое.
Программно можно создать ярлык можно с помощью WSH (JS/VBS) скрипта, там есть соответствующий объект. Можно ли поправить свойства существующего ярлыка - не знаю. Наверное есть соответствующие средства и в power shell.
Но! Скажите нахрена вам в ярлыке не существующая рабочая папка? Если не знаете что указать - укажите %SystemRoot%\system32
В конце концов, создайте этот путь временно, поправьте ярлык и удалите.
res2001, я перемещал установленную IDE для C++ - Qt Creator с одного диска на другой. И установленные в Винду ярлыки тоже модифицировал. Но был один ярлык с некорректным путём рабочей папки. Это ПО критично для меня, поэтому я не хочу кардинально менять в ярлыках какие-либо пути. Вдруг с этим в будущем возникнет какая-то проблема, а я буду думать, что %SystemRoot%/system32 - это родной путь рабочей папки...
Kirgus, Рабочая папка в ярлыке при запуске программы преобразуется в текущий каталог в окружении запущенной программы. Но если путь не существует, то система подставляет какой-то свой (предположительно %SystemRoot%\system32). И если программа прекрасно работает с "каким-то" путем, то она скорее всего будет так же прекрасно работать с любым другим путем. Думаю нет смысла беречь этот не существующий путь. Вы можете скопировать оригинальный ярлык куда-нибудь, рабочий ярлык исправить и поработать какое-то время. Когда убедитесь, что все нормально, можно и копию будет грохнуть. Работа нормально написанной программы не должна зависеть от текущего каталога, т.к. этот фактор всегда может поменяться по независящим от программы причинам.
На сколько я знаю Qt Creator к системе не привязывается и вроде бы его можно просто переложить в другое место и он будет работать от туда. Хотя я таких экспериментов не проводил. Предпочитаю ставить в другом месте с нуля. Даже если после переноса что-то не заработает, то можно запустить Maintenanse Tools и выполнить восстановление. Как-то так вижу.
res2001, нет, Qt Creator привязывается к системе и к родному пути установки.
После перемещения папки IDE мне пришлось ещё редактировать реестр и вручную создавать и настраивать профили Qt, отладчики, компиляторы и т.п., иначе проект даже создать было невозможно.
Я не глупый, я прекрасно понимаю что ты пытаешься до меня донести, но я боюсь другого. Думаю нет смысла больше обсуждать эту тему, я останусь при своём мнении)
res2001, блииин, и правда, на гитхабе есть готовые билды... А я раньше не мог их там найти...
Я как дурак пытался исходники собирать (но не выходило)
Спасибо за Qt)
Я всё же додумался просто открыть файл Ярлык.lnk в текстовом редакторе и понял, что пути хранятся прямо в ярлыке. Отредактировал и теперь работает как надо.