Я пытаюсь создать небольшую программу, которая возвращает пользователю целевое имя файла ярлыка в C# (Консольное приложение). Мой код работает без ошибок, но это не дает мне правильный результат.Ошибка при поиске цели ярлыка
Это мой код: (взял из: http://snipplr.com/view/47974)
private static string GetTargetPath(string ShortcutPath)
{
string pathOnly = System.IO.Path.GetDirectoryName(ShortcutPath);
string filenameOnly = System.IO.Path.GetFileName(ShortcutPath);
Shell32.Shell shell = new Shell32.ShellClass();
Shell32.Folder folder = shell.NameSpace(pathOnly);
Shell32.FolderItem folderItem = folder.ParseName(filenameOnly);
if (folderItem != null)
{
Shell32.ShellLinkObject link = (Shell32.ShellLinkObject)folderItem.GetLink;
return link.Path;
}
return ""; // not found
}
Как я уже сказал, код извлечения мне неправильный результат (пустая строка), даже если файл существует. Например, я устал, чтобы получить целевой файл некоторого ярлыка в пути: C: \ Users \ Admin123 \ AppData \ Роуминг \ Microsoft \ Office \ Недавние
Что может быть причиной этой проблемы? и как я могу его решить?
EDITЯ попробовал один и тот же код еще раз и теперь он работает! Спасибо всем ! :)
Я считаю, что вам необходимо использовать службы COM Interop для успешного использования компонентов Shell32.dll. У меня никогда не было причин использовать его, хотя я не хочу указывать вас слишком далеко в неправильном направлении. Вот статья MSDN для COM-переходов: http://msdn.microsoft.com/en-us/library/aa645712(v=vs.71).aspx – JNYRanger
Вы просто хотите знать, существует ли файл или нет? – wruckie