Вопрос

Предыстория: Я решил самостоятельно изучать C # с помощью WPF и пишу небольшое приложение, которому необходимо получить список ярлыков меню "Пуск" и их целевых объектов и сохранить их.По сути, я пытаюсь использовать все ярлыки и поместить пути к их целевым приложениям в память.Однако я столкнулся с проблемой, пытаясь прочитать ярлыки установщика Windows (те, которые указывают на что-то вроде C:\Windows\Installer\{90120000-0030-0000-0000-0000000FF1CE}\wordicon.exe -- Microsoft Office - хороший пример этого).Я провел некоторое исследование, и, похоже, Windows использует какую-то закулисную магию, связанную с реестром, чтобы найти фактическое местоположение файла.


Вопрос: Как я могу получить фактическую цель этих ярлыков установщика Windows на C #?Многие источники, которые я нашел, указывают мне на IShellLink интерфейс, но я не знаю, как использовать его с C #.Я бы предпочел использовать вызовы Windows API (или, что еще лучше, библиотеку .NET) вместо ручного просмотра реестра, но я приму любые рекомендации по этому вопросу.

Это было полезно?

Решение

Проведя дополнительные исследования, я нашел простой ответ здесь.В основном это использование комбинации MsiGetShortcutTarget и MsiGetComponentPath функции msi.dll.

Другие советы

Я боюсь, ЧТО IShellLink - ЭТО Windows API для использования ссылок на оболочку!API оболочки в значительной степени основан на COM.

Но хорошей новостью является то, что COM-взаимодействие очень хорошо работает в .NET.Этот сайт обычно является очень хорошим ресурсом:

http://www.pinvoke.net/default.aspx/Interfaces/IShellLinkA.html

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top