@AleexF

Как программно создать ярлык в MS VC++ 14.0 Windows 10?

Занимаюсь спортивным программированием. Сейчас решил себя попробовать немного в другом, и сразу столкнулся с проблемой: Допустим у меня есть программа в корне диска D:\app1.exe, на том же диске есть папка с другой программой D:\test\example.exe. Так вот: у меня программа app1.exe во время своей работы вызывает программу в папке test по пути .\test\example.exe (т. к. app1.exe находиться в корне D:\ то это то же самое, что и D:\test\example.exe). Программа example.exe в результате своей работы создаёт файл выходных данных, к примеру, output.txt; Проблема состоит в том, что при запуске app1.exe, который в свою очередь запускает example.exe, а эта программа создаёт файл output.txt, то файл output.txt создаётся в корне D:\, а не в папке, где находиться программа, создающая файл (должно быть в D:\test\). Выяснил, что при запуске программы example.exe через ярлык создаётся всё как надо. Поискал в интернете как программно создавать ярлыки на MS VC++(именно программно, в ручную никак), но после запуска кода появляется только файл с иероглифами в названии. Помогите, пожалуйста, найти код который будет работать. Желательно с описанием. Или, быть может, Вы знаете другой способ добиться желаемого результата? Заранее спасибо.
Windows 10 Home
MS VC++ 14.0
С++ 11
  • Вопрос задан
  • 266 просмотров
Решения вопроса 1
tsklab
@tsklab
Здесь отвечаю на вопросы.
бла-бла-бла
При запуске программы, в её окружении есть полный путь. Берёте папку программы и создаёте там свой output.txt.
Модуль:                opera.exe, 32-битный
Полный путь:           C:\Program Files (x86)\Opera\41.0.2353.69\opera.exe
Версия файла:          41.0.2353.69
Описание:              Opera Internet Browser
PID:                   9892
Parent PID:            9884
Приоритет:             8
Нитей:                 36
Владелец:              TSK-HOME\tsk (S-1-5-21-2854898707-2914625786-2582272332-1001)
Сеанс:                 1
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Adamos
@Adamos
Вообще-то в этом веке за создание программой файлов в той же папке, где находится программа, бьют по пальцам рельсой.
Потому что даже до "подоконников" уже дошло, что папка, откуда что-то запускается, не должна быть доступна кому попало на запись.
Программа по умолчанию должна иметь право создавать какие бы то ни было файлы только по пути %APPDATA%/(название этой программы)/.
Ну, может спросить пользователя, куда он предпочитает этот файл сохранить.

А валить файлы себе же под ноги - это каменный век IT, и именно это неумение и нежелание организовать безопасное пространство - причина того, что по Виндам табунами ходят вирусы.
Ответ написан
Daniro_San
@Daniro_San
Программист
Ваш способ с ярлыком - не более чем убогий костыль.
Сведите все до одного файла.
Пусть app1.exe сразу создает output.txt в D:/test
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы