質問

必要があります。開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;

できないかもしれませんので、何を変更します。私だけのオプションをショートカットを上書きし現。..との答えを見出さなければならないのだということですかね?

役に立ちましたか?

解決

な読み取り、利用lnk->パスではなく、次いでlnk->Save().とい書き込み権限のファイルです。C#のコードは同じもの私の回答 このスレッド.

他のヒント

再作成AショートカットとWSH

あなたは、既存のショートカットを削除し、新しいターゲットで新しいものを作成することができます。

:新しいものを作成するには、次のコードを使用することができます
public void CreateLink(string shortcutFullPath, string target)
{
    WshShell wshShell = new WshShell();
    IWshRuntimeLibrary.IWshShortcut newShortcut = (IWshRuntimeLibrary.IWshShortcut)wshShell.CreateShortcut(shortcutFullPath);
    newShortcut.TargetPath = target;
    newShortcut.Save();
}

一瞬のために、私はショートカットを再作成することなく、ターゲットを変更するにはどのような方法が表示されません。

注:スニペットを使用するように、あなたはを追加する必要がありますWindowsスクリプトホストオブジェクトモデルのCOMプロジェクトの参照に

Shell32はとターゲットパスを変更します

ここでは、それを削除して再作成することなく、ショートカットのターゲットを変更抜粋です

public void ChangeLinkTarget(string shortcutFullPath, string newTarget)
{
    // Load the shortcut.
    Shell32.Shell shell = new Shell32.Shell();
    Shell32.Folder folder = shell.NameSpace(Path.GetDirectoryName(shortcutFullPath));
    Shell32.FolderItem folderItem = folder.Items().Item(Path.GetFileName(shortcutFullPath));
    Shell32.ShellLinkObject currentLink = (Shell32.ShellLinkObject)folderItem.GetLink;

    // Assign the new path here. This value is not read-only.
    currentLink.Path = newTarget;

    // Save the link to commit the changes.
    currentLink.Save();
}

二つ目は、あなたが必要なものと考えられます。

注:私はC ++ / CLIを知らないので、申し訳ありませんが、スニペットは、C#です。誰かがC ++ / CLIのため、これらのスニペットを書き換えたい場合は、私の答えを編集すること自由に感じています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top