Вопрос по hex, shortcut, windows, structure – Какова внутренняя структура ярлыка Windows?

3

3 HDD на одном компьютере: 2 с Windows XP, 1 с Windows 7, последовательно загружайте операционную систему от каждого из них.

Я обнаружил, что некоторые рабочие ярлыки (не все), созданные в первой XP, не работают во второй XP и Windows 7 (недоступно для просмотра объекта для ярлыка).

Чтобы понять, почему это не работает, я создаю тот же ярлык в Windows 7 и открываю оба файла этих ярлыков в шестнадцатеричном редакторе.

Я обнаружил, что это разные структуры, но я не знаю, как это сравнить.

Какова внутренняя структура ярлыка Windows?

Какие начальные и конечные байты некоторых полезных блоков содержимого ярлыка?

Я не думаю, что это правильное место для таких вопросов. что вы имеете ввиду под последовательной загрузкой ОС? Skaros Ilias
@Skaros Ilias - это значит, что я запускаю одну из них, затем выключаю, после запуска следующей ОС, затем выключаю, затем запускаю третью ОС, и в каждой из них были доступны все 3 жестких диска, проблемные ярлыки были доступны в других ОС jah

Ваш Ответ

1   ответ
2

.lnk) формат файлаМИЗ свойство и его описание в[MSDN]: [MS-SHLLINK]: двоичный формат файла Shell Link (.LNK).

Однако, чтобы избавить вас от прочтения всего этого.pdfодна вещь, которая хранится в ярлыке наверняка (это можно проверить, «глядя» на ярлык с помощью шестнадцатеричной программы просмотра) - это (полный) целевой путь, на который он ссылается (!!!важный!!! во время создания): так что это"DriveLetter:\ The_full_path».

Чтобы устранить путаницу, я бы предложил поиграть с ярлыками, у которых есть цели на одном диске.

При переключениижесткий дисксDriveLetterс (иначе"C:") указывают на разные вещи:

Допустим, вы создали на одном из них ярлык:"C: \ shortcut.lnk" ("C:" этоDriveLetter назначен нажесткий диск гдеВыиграть загрузился с): давайте назовем этоHDD1.
Ярлык указывает на целевой файл, расположенный на другомжесткий диск (и раздел): давайте назовем этоHDD2 (например.«E: \ target.txt)

Когда вы переключитесьжесткий дискс (делаяHDD2 основной загрузочный диск)DriveLetters тоже изменится, так что теперь:

HDD2 будет"C:"HDD1 будет"D:"


Вещи усложняют еще больше при представленииHDD3 и так далее.

Как ответ на наш вопрос:.lnk файлы не работают, потому что их цель больше не присутствует.

Я только что создал ярлыки наXP а такжеW7  и оба первых 20 байтов4C 00 00 00 01 14 02 00 00 00 00 00 C0 00 00 00 00 00 00 46 (hex) как указаноВот. CristiFati
спасибо за ваш комментарий, я также сначала подумал о порядке байтов, потому что в документе сказано: «Многобайтовые значения данных в двоичном формате файлов Shell Link хранятся в формате с прямым порядком байтов.», но инвертированы только первые 4 байта, поэтому пока остается загадкой jah
большое спасибо за отличный ответ, я прочитаю этот документ, я могу только добавить, что некоторые из проблемных ярлыков были на сетевых ресурсах, и они были доступны jah
О, теперь я вижу разницу. Если вы посмотрите внимательно, (4) байты в первой группе GUID поменялись местами00 02 14 01 <->01 14 02 00, Я видел это в других сценариях (например, разделы UUID материнской платы перевернуты), я не знаю точно, почему. Сначала я подумал, что это из-запорядок байт, но если это было из-за этого, это должно относиться ко всем группам (и дляC0 00 не делает). CristiFati

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