Получить информацию о ярлыке Windows в C#
Метод GetShortcutInfo, показанный в следующем коде, получает информацию о ярлыке.
// Get information about this link. // Return an error message if there's a problem. private string GetShortcutInfo(string full_name, out string name, out string path, out string descr, out string working_dir, out string args) { name = ""; path = ""; descr = ""; working_dir = ""; args = ""; try { // Make a Shell object. Shell32.Shell shell = new Shell32.Shell(); // Get the shortcut's folder and name. string shortcut_path = full_name.Substring(0, full_name.LastIndexOf("\\")); string shortcut_name = full_name.Substring(full_name.LastIndexOf("\\") + 1); if (!shortcut_name.EndsWith(".lnk")) shortcut_name += ".lnk"; // Get the shortcut's folder. Shell32.Folder shortcut_folder = shell.NameSpace(shortcut_path); // Get the shortcut's file. Shell32.FolderItem folder_item = shortcut_folder.Items().Item(shortcut_name); if (folder_item == null) return "Cannot find shortcut file '" + full_name + "'"; if (!folder_item.IsLink) return "File '" + full_name + "' isn't a shortcut."; // Display the shortcut's information. Shell32.ShellLinkObject lnk = (Shell32.ShellLinkObject)folder_item.GetLink; name = folder_item.Name; descr = lnk.Description; path = lnk.Path; working_dir = lnk.WorkingDirectory; args = lnk.Arguments; return ""; } catch (Exception ex) { return ex.Message; } }
Программа сначала создает объект Shell32.Shell для работы с оболочкой Windows. Он использует метод NameSpace этого объекта, чтобы получить объект Folder, представляющий папку, содержащую ярлык, представляющий интерес. Он использует коллекцию Items этого объекта, чтобы получить имя ярлыка и ShellLinkObject, представляющий ярлык. Из этого объекта метод, наконец, получает всю необходимую информацию.
Если вы посмотрите внимательно на картинку, вы увидите, что в этом примере ярлык ...
- имя было "Signature"
- описание было "Создает и редактирует текстовые документы со сложным
- форматированием"
- путь был путь к исполняемому файлу WordPad
- рабочий каталог был моим рабочим столом
- аргументы были "sig.txt"
Поэтому, когда я дважды щелкаю этот ярлык, он открывает Word в директории моего рабочего стола и открывает файл sig.txt, расположенный там.
Источник: