Как программно изменить .lnk, чтобы изменить его цель?

Есть ли способ открыть ярлык Windows (файл .lnk) и изменить его цель? Я нашел следующий фрагмент, который позволяет мне найти текущую цель, но это свойство только для чтения:

Shell32::Shell^ shl = gcnew Shell32::Shell();
String^ shortcutPos = "C:\\some\\path\\to\\my\\link.lnk";
String^ lnkPath = System::IO::Path::GetFullPath(shortcutPos);
Shell32::Folder^ dir = shl->NameSpace(System::IO::Path::GetDirectoryName(lnkPath));
Shell32::FolderItem^ itm = dir->Items()->Item(System::IO::Path::GetFileName(lnkPath));
Shell32::ShellLinkObject^ lnk = (Shell32::ShellLinkObject^)itm->GetLink;
String^ target = lnk->Target->Path;

Я не могу найти ничего, что могло бы изменить цель. Единственный ли у меня вариант - создать новый ярлык для перезаписи текущего? ..и если да, то как мне это сделать?

6
задан Jason 29 September 2010 в 15:32
поделиться