Декодирование значения Internet Shortcut IDList

Я пытался найти любую информацию о значении, которое хранится в ярлыке URL-адреса, сгенерированном из MS-Office для библиотек SharePoint. Мы переходим с Office 2007 на Office 365, и функция 2007, которая создает эти ссылки, недоступна в Office 365.

Если файл .url не имеет значения IDList, когда вы щелкаете по нему в диалоговом окне сохранения как, он меняет имя файла на ярлык. Я попытался изменить .url на .lnk, но не офисные приложения не могут их обработать.

Содержимое файла .url

[InternetShortcut]
IDList=UAwHYBGLNCi66kGEieNCAsCMw0pTAMcAlzFXj9mZr5yalx2b35WYuMWYcRUY2d1VXJ1bvRHAXVmYgMEbpVmb0BiTlR3dvJ3aAgGd0BnOv8yYvZ2ausWZs92duFmLjFGAuAATAEDAAAAAAAAAAAAEAQXZh12cAgDAIAABA8uvAAAAAAAAAAgKAAAAAAAAAAAAAAAAAAAA8gPuuBAAAAAAAQHAlBQYA0GAzBAAAQBAKBQMAAAAAAAAAAAAQAQZk12cAAgNAgAAEAw7+CAAAAAAAAAAqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQZAQGAtBwcAAAAUAAAAA
URL=file://blart/DavWWWRoot/teams/edms
IconFile=C:\ProgramData\Microsoft\Office\SharePointTeamSite.ico
IconIndex=0
[{000214A0-0000-0000-C000-000000000046}]
Prop3=19,9

Тот же файл, созданный пользователем

IDList=UAwHYBGLNCi66kGEieNCAsCMw0pTAMcAlzFXj9mZr5yalx2b35WYuMWYcRUY2d1VXJ1bvRHAXVmYgMEbpVmb0BiTlR3dvJ3aAgGd0BnOv8yYvZ2ausWZs92duFmLjFGAuAATAEDAAAAAAAAAAAAEAQXZh12cAgDAIAABA8uvAAAAAAAAAAgKAAAAAAAAAAAAAAAAAAAA0baRNAAAAAAAAQHAlBQYA0GAzBAAAQBAKBQMAAAAAAAAAAAAQAQZk12cAAgNAgAAEAw7+CAAAAAAAAAAqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQZAQGAtBwcAAAAUAAAAA

Значение из файла от другого пользователя

IDList=UAwHYBGLNCi66kGEieNCAsCMw0pTAMcAlzFXj9mZr5yalx2b35WYuMWYcRUY2d1VXJ1bvRHAXVmYgMEbpVmb0BiTlR3dvJ3aAgGd0BnOv8yYvZ2ausWZs92duFmLjFGAuAATAEDAAAAAAAAAAAAEAQXZh12cAgDAIAABA8uvAAAAAAAAAAgKAAAAAAAAAAAAAAAAAAAA4BZpCAAAAAAAAQHAlBQYA0GAzBAAAQBAKBQMAAAAAAAdHBlfQAQZk12cAAgNAgAAEAw7+qXQJdJdHBlfqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQZAQGAtBwcAAAAUAAAAA

Я не смог понять, как расшифровать это значение, или мне удалось выяснить, какие данные в нем хранятся. Я прочитал множество различных способов программного создания ярлыков с помощью сценариев Windows и оболочки 32 в оболочках Powershell и C #, C ++ ищет любую информацию. Единственный проблеск надежды, который у меня есть, заключается в том, что ссылки оболочки также имеют список идентификаторов элементов pidl, но я не могу подтвердить, связано ли это.

Что я знаю, так это то, что IDList можно переместить в другой .url, и он приведет вас к исходному пути. Есть некоторые разделы IDList, которые меняются в зависимости от пользователя, создавшего их, и/или когда заново создаются файлы URL.

Ярлыки Интернета https://msdn.microsoft.com/en-us/library/bb776784(v=vs.85).aspx

Ссылка на оболочку https://msdn.microsoft.com/en-us/library/dd891312.aspx


person Toby Leduc    schedule 05.01.2016    source источник


Ответы (1)


Формат файла .URL официально не задокументирован и только первые 2 байта формата IDList задокументированы.

Я полагаю, что строка IDList раньше сохранялась путем вызова WritePrivateProfileStruct и в какой-то момент была изменена на опубликованный вами формат. Функция с именем TextToBinary декодирует строку в экземпляр IStream, но я не пытался выяснить формат. Поток помещается в PROPVARIANT, и документированный IUniformResourceLocator интерфейс знает, как справиться со всем этим за вас, но, к сожалению, запись в списке idlist не задокументировано как свойство, которое вы можете читать/записывать.

PIDL (IDList) после декодирования строки .INI и некоторого базового форматирования выглядит следующим образом:

:1: 20 bytes
  {208D2C60-3AEA-1069-A2D7-08002B30309D}:Network
:2: 78 bytes
  4E 00 C3 01 E5 5C 5C 63  6F 66 6B 2E 6B 65 6C 6F  N....\\c ofk.kelo
  77 6E 61 2E 63 61 5C 44  61 76 57 57 57 52 6F 6F  wna.ca\D avWWWRoo
  74 00 57 65 62 20 43 6C  69 65 6E 74 20 4E 65 74  t.Web Cl ient Net
  77 6F 72 6B 00 68 74 74  70 3A 2F 2F 63 6F 66 6B  work.htt p://cofk
  2E 6B 65 6C 6F 77 6E 61  2E 63 61 00 2E 00 __ __  .kelowna .ca...
:3: 76 bytes
  4C 00 31 00 00 00 00 00  00 00 00 00 10 00 74 65  L.1..... ......te
  61 6D 73 00 38 00 08 00  04 00 EF BE 00 00 00 00  ams.8... ........
  00 00 00 00 2A 00 00 00  00 00 00 00 00 00 00 00  ....*... ........
  00 00 00 00 3C F8 B8 6E  00 00 00 00 00 00 74 00  ....<..n ......t.
  65 00 61 00 6D 00 73 00  00 00 14 00 __ __ __ __  e.a.m.s. ....
:4: 74 bytes
  4A 00 31 00 00 00 00 00  00 00 00 00 10 00 65 64  J.1..... ......ed
  6D 73 00 00 36 00 08 00  04 00 EF BE 00 00 00 00  ms..6... ........
  00 00 00 00 2A 00 00 00  00 00 00 00 00 00 00 00  ....*... ........
  00 00 00 00 00 00 00 00  00 00 00 00 00 00 65 00  ........ ......e.
  64 00 6D 00 73 00 00 00  14 00 __ __ __ __ __ __  d.m.s... ..
:5: 0 bytes

и результат после запроса оболочки на преобразование этого PIDL — \\cofk.kelowna.ca\DavWWWRoot\teams\edms.

Разница между тремя опубликованными вами примерами заключается только в части пути PIDL (teams\edms), возможно, в дате изменения папки или неинициализированных данных.

person Anders    schedule 04.06.2019