3

C# を使用して、システム上の最新のファイルにアクセスし、それらをコピーしています

Environment.SpecialFolder.Recent

ただし、Windows の最近のフォルダーは、ファイルの実際の場所へのショートカットを作成するだけです。ショートカット自体ではなく、ショートカットが指しているファイルをコピーするにはどうすればよいでしょうか?

助けてくれてありがとう

4

3 に答える 3

1

私はこのコードを見つけて変更しました、私のために働きます:

static string GetShortcutTargetFile(string shortcutFilename)
{
    string pathOnly = System.IO.Path.GetDirectoryName(shortcutFilename);
    string filenameOnly = System.IO.Path.GetFileName(shortcutFilename);

    Shell32.Shell shell = new Shell32.Shell();
    Shell32.Folder folder = shell.NameSpace(pathOnly);
    Shell32.FolderItem folderItem = folder.ParseName(filenameOnly);
    if (folderItem != null)
    {
        return ((Shell32.ShellLinkObject)folderItem.GetLink).Path;
    }

    return ""; // not found, use if (File.Exists()) in the calling code
    // or remove the return and throw an exception here if you like
}

Microsoft Shell Controls And Automationこれを機能させるには、 COMオブジェクト(Shell32.dll)への参照をプロジェクトに追加する必要があります。

于 2011-10-12T11:48:29.547 に答える
0

このサンプル コードは、 .lnkファイルからターゲット リンクを取得するのに役立つ可能性があります。

于 2011-10-12T12:00:39.610 に答える
0

これは少し前に尋ねられた同様の質問ですが、最初の回答は、ターゲット ファイル/フォルダー名を解決する限り、あなたが望むことを行うコードを提供します。

C# で .lnk を解決する方法

そこから、ショートカットのリストを調べて、リンクされた場所を解決し、 を使用File.Copy(linkPath, copyPath);してジョブを終了するだけです。

于 2011-10-12T11:51:39.453 に答える