C# を使用して、システム上の最新のファイルにアクセスし、それらをコピーしています
Environment.SpecialFolder.Recent
ただし、Windows の最近のフォルダーは、ファイルの実際の場所へのショートカットを作成するだけです。ショートカット自体ではなく、ショートカットが指しているファイルをコピーするにはどうすればよいでしょうか?
助けてくれてありがとう
C# を使用して、システム上の最新のファイルにアクセスし、それらをコピーしています
Environment.SpecialFolder.Recent
ただし、Windows の最近のフォルダーは、ファイルの実際の場所へのショートカットを作成するだけです。ショートカット自体ではなく、ショートカットが指しているファイルをコピーするにはどうすればよいでしょうか?
助けてくれてありがとう
私はこのコードを見つけて変更しました、私のために働きます:
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)への参照をプロジェクトに追加する必要があります。
このサンプル コードは、 .lnkファイルからターゲット リンクを取得するのに役立つ可能性があります。
これは少し前に尋ねられた同様の質問ですが、最初の回答は、ターゲット ファイル/フォルダー名を解決する限り、あなたが望むことを行うコードを提供します。
そこから、ショートカットのリストを調べて、リンクされた場所を解決し、 を使用File.Copy(linkPath, copyPath);
してジョブを終了するだけです。