将快捷方式复制到桌面

时间:2014-03-31 15:14:56

标签: c# .net copy desktop shortcut

我有这个小工具,我正在努力帮助管理另一个应用程序的菜单。我需要这个工具来复制快捷方式文件,就像任何其他文件一样。不幸的是,它会复制每个文件,但文件扩展名为.lnk。有谁知道为什么?我似乎无法找到任何相关信息。我不是从零开始创建快捷方式,而是复制现有的快捷方式。我已经尝试过FileInfo.CopyTo()和File.Copy()方法。它实际上复制文件,然后抛出异常,这真的很奇怪。如果我用try..catch包装它...(在catch中没有任何内容)那么它似乎可以使用一些例外,它们中的一些会丢失它们的快捷方式图标。并不是说它可能有多大帮助,但这是我的代码的要点:

DirectoryInfo destinationDirectory= new DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.Desktop));    
string temppath = Path.Combine(destinationDirectory.FullName, sourceFile.Name);
sourceFile.CopyTo(temppath.FullName, true);

答案:

感谢Alireza指出我正确的方向。这就是我最终做的事情:

DirectoryInfo destinationDirectory = new DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.Desktop));
FileInfo shortcut = sourceFile.Directory.GetFiles("*.lnk").FirstOrDefault(f => f.Name == sourceFile.Name) as FileInfo;
if (shortcut != null)
{
  File.Copy(shortcut.FullName, Path.Combine(destinationDirectory.FullName, shortcut.Name), true);
}

1 个答案:

答案 0 :(得分:1)

这应该有效:

var shortcuts = new DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.Desktop))
               .GetF‌​iles("*.lnk");
string destFolder = destinationDirectory.FullName;
foreach(var f in shortcuts)
    File.Copy(f.FullName, Path.Combine(destFolder,f.Name));