Создайте ярлык относительного пути с флагом SLDF_HAS_RELPATH в C++.C++

Программы на C++. Форум разработчиков
Anonymous
 Создайте ярлык относительного пути с флагом SLDF_HAS_RELPATH в C++.

Сообщение Anonymous »

После небольшого исследования того, как создать ярлык с целевым относительным путем (большинство ответов в Интернете предлагают использовать %COMSPEC% /c start .\something.exe), я наткнулся на этот вопрос из 2010 года. Один из ответов предполагает, что ярлыки относительных путей фактически поддерживаются Windows без необходимости использования какого-либо обходного пути. Для этого вам нужно написать двоичный файл ярлыка, ярлыки с флагом SLDF_HAS_RELPATH.
Я пытался портировать сценарий NSIS исходного ответа на C++:

Код: Выделить всё

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

// Helper function to write hexadecimal bytes to a file.
void FileWriteHexBytes(std::ofstream &file, const std::string &hexBytes) {
for (size_t i = 0; i < hexBytes.length(); i += 2) {
std::string byteString = hexBytes.substr(i, 2);
unsigned char byte = static_cast(std::stoi(byteString, nullptr, 16));
file.write(reinterpret_cast(&byte), 1);
}
}

// Function to create a relative symbolic link file.
void CreateRelativeLnk(const std::string &filePath, const std::string &relativeTargetPath) {
std::ofstream file(filePath, std::ios::binary);
if (!file) {
std::cerr 

Подробнее здесь: [url]https://stackoverflow.com/questions/79037927/create-a-relative-path-shortcut-with-the-sldf-has-relpath-flag-in-c[/url]

Вернуться в «C++»