Я пытаюсь прочитать цели всех ярлыков на рабочем столе в приложении C # 4. Ярлыки на рабочем столе Windows могут поступать из нескольких мест в зависимости от того, создан ли ярлык для всех пользователей или только для текущего пользователя. В этом конкретном случае я пытаюсь прочитать ярлык с общедоступного рабочего стола, например, из C: \ Users \ Public \ Desktop \ shortcut.lnk.
Код выглядит следующим образом (путь - это строка, содержащая путь к файлу lnk):
var shell = new Shell32.ShellClass();
var folder = shell.NameSpace(Path.GetDirectoryName(path));
var folderItem = folder.ParseName(Path.GetFileName(path));
if (folderItem != null)
{
var link = (Shell32.ShellLinkObject)folderItem.GetLink;
В последней строке выдается исключение System.UnauthorizedAccessException, указывающее, что запрещено читать содержимое файла ярлыка. Я пробовал ярлыки на личном рабочем столе пользователя (c: \ Users \ username \ Desktop), и это прекрасно работает.
Итак, мои вопросы:
(1) почему моему приложению не разрешено / читать / ярлык из кода, когда я могу четко читать содержимое как пользователь?
(2) есть ли способ обойти это? Может быть, использовать специальный файл манифеста для приложения?
И, кстати, моя ОС - Windows 7, 64-битная.
будь здоров
-h-